使用逻辑回归预测用户是否会购买SUV

机器学习6-逻辑回归 逻辑回归也可以扩展到处理多分类问题,这时通常使用一对多(One-vs-Rest)或一对一(One-vs-One)的方法。对于逻辑回归,常用的损失函数是交叉熵损失函数(Cross-Entropy Loss),也称为对数损失函数。逻辑回归模型假设输出是二进制的,通常表示为0或1。3. 市场营销:预测客户是否购买某个产品或服务,基于客户的购物历史、在线行为等特征。训练完成后,可以使用学到的参数确定决策边界,即在特征空间中将两个类别分开的边界。因为没有画出原始数据,无法直观比较,不过对测试数据的预测还是比较准的。 阅读详情

往期推荐

机器学习100天学习计划 — 第1天 数据预处理

机器学习100天学习计划 — 第2天 线性回归

机器学习100天学习计划 — 第3天 多元线性回归

这是机器学习100天学习计划的第4天,我们将探讨逻辑回归存在的必要性、逻辑回归训练时的数据要求、逻辑回归的基本运行原理。

文章的最后我们会做一个简单应用:使用逻辑回归预测用户是否会购买SUV.

01

为什么需要逻辑回归?

从前面的学习中知道,线性回归对数据的要求非常严格,比如自变脸必须满足正态分布,特征之间的多重共线性需要消除,实际生活中的数据无法彻底满足这些要求,因此它在现实场景中的应用效果有限。

为了解决那些不满足线性回归的严格要求的数据分析需求,我们需要逻辑回归。

逻辑回归由线性回归变化而来,它对数据的要求没那么高,分类效力很强,对数据不需要做消除多重共线性之类的预处理。逻辑回归有以下三个优点:

1.逻辑回归对线性关系的拟合效果好到丧心病狂,比如电商营销预测、信用卡欺诈、打分等实际落地应用相关的数据都是逻辑回归的强项。

2.对于线性数据,逻辑回归的拟合和计算非常快,尤其对于大数据,这点优势极其明显。

3.逻辑回归返回的分类结果不是固定的0或1,而是以小数形式反馈的类概率数字,因此你可以把逻辑回归返回的结果当成连续型数据使用。

逻辑回归的原理不简单,细节非常多,不是在本篇文章能讲完的,所以本篇文章主要是给大家提供逻辑回归的使用方法及其注意事项,并以一个小应用为例入门逻辑回归。

02

逻辑回归数据要求

逻辑回归对数据并不是没有要求,下面就是使用逻辑回归分析前需要注意的几个问题:

1.样本数量最好大于300.

2.自变量最好是“分类”的形式。

3.模型运行前去除异常值和缺失值。

你并不需要严格遵守上述要求,遇到特殊情况可以灵活变通。

03

逻辑回归如何工作

上述内容可能你不一定能看得懂,没关系,往后看我们的实操训练,动手实操后你一定有所收获。

04

预测用户是否会购买SUV

现在有一个数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买:

接下来我们将建立一种逻辑回归模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试寻找用户年龄与预估薪资之间的某种相关性,以及他是否购买SUV的决定。

本文源代码和数据文件,可以扫码关注【我是IT小王子】

后台回复:机器学习4 下载。

4.1

数据预处理

导入库:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

导入数据集,为了方便可视化,我们暂时去除了性别这一列:

dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
Y = dataset.iloc[:,4].values

将数据集分成训练集和测试集:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)

特征缩放:

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

4.2

逻辑回归模型

逻辑回归是一个线性分类器,这意味着我们在二维空间中,我们两类用户(购买和不购买)将被一条直线分割。

将逻辑回归应用于训练集:

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

4.3

预测

预测测试集结果:

y_pred = classifier.predict(X_test)

4.4

模型评估

刚刚我们预测了测试集。现在我们将评估逻辑回归模型是否正确的学习和理解数据。我们将用到混淆矩阵:

混淆矩阵是一种可视化工具,矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。之所以如此命名,是因为通过这个矩阵可以方便地看出机器是否将两个不同的类混淆了。

生成混淆矩阵:

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)

结果如下:

[[65  3]
 [ 8 24]]

这说明,分类正确的值有65+24=89个,分类错误的值有3+8=11个,准确率为89%.

可视化的代码如下:                          

上滑查看更多代码

X_set, y_set = X_train, y_train
X1, X2 = np.meshgrid(np.arange(start=X_set[:, 0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                      np.arange(start=X_set[:, 1].min()-1, stop=X_set[:, 1].max()+1, step=0.01))
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha=0.75, cmap=ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c=ListedColormap(('red', 'green'))(i), label=j)

plt.title('LOGISTIC(Training set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()

X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start=X_set[:, 0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                      np.arange(start=X_set[:, 1].min()-1, stop=X_set[:, 1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha=0.75, cmap=ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c=ListedColormap(('red', 'green'))(i), label=j)

plt.title('LOGISTIC(Test set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()


对于训练集,我们训练得到的分隔线如上图所示,存在部分的错误分类,但大部分数据点都分类正确。

使用训练集得到的分割线来分隔测试集,分类结果如上图所示,有11个错误分类的点。

05

加上性别一列进行预测

刚刚为了可视化结果,我们去掉了性别这一列进行训练和测试。

但性别对结果的影响是实际存在的,所以我们将性别重新加入训练集中进行训练并测试。

改动非常简单,只需要在导入数据集的时候将性别这一列加回来,并将性别转化为数字:

# 1.导入数据集
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [1, 2, 3]].values
Y = dataset.iloc[:, 4].values

# 性别转化为数字
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])

完整代码如下:

上滑查看更多代码

from sklearn.metrics import confusion_matrix
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 1.导入数据集
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [1, 2, 3]].values
Y = dataset.iloc[:, 4].values

# 性别转化为数字
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])

# 2.将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    X, Y, test_size=0.25, random_state=0)

# 3.特征缩放
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

# 4.训练
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

# 5.预测
y_pred = classifier.predict(X_test)

# 6.评估预测 生成混淆矩阵
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)
# 生成混淆矩阵
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)

结果如下:

(base) G:\push\20210117>python test_with_gender.py
[[65 3]
 [ 7 25]]

可见,分类正确的值有65+25=90个,分类错误的值有3+7=10个,准确率为90%.

这相比于除去性别这一列时得到的89%准确率的测试结果有1%的提升。

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注AI派

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】哦

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

机器学习100天: Day3 - 6 逻辑回归 本文介绍逻辑回归算法及其代码实现 数据集 | 社交网络 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试... 阅读详情

相关推荐

第4步 Logistic回归

构建逻辑回归模型

Jet4505的博客 2190

Day6--Logistic Regression代码

数据集 | 社交网络 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试寻找用户年龄与预估薪资之间的某种相关性,...

abc_138的博客 795

数据科学-机器学习案例-电动汽车目标客户销售策略研究

电动汽车目标销售策略研究:内容包括训练集与测试集,数据处理方法,模型使用,模型评价,可视化等方面。处理数据中的异常值、缺失值,使用不同的可视化方法可视化数据中的预测变量、根据不同的品牌汇总数据的变量。可视化图例包括:雷达图、热图、散点图。柱形图、条形图。模型方面包括glmnet模型,SCAD模型,集成模型。可视化方面包括可视化混淆矩阵,ROC曲线等等。 电动车目标销售策略为类失衡建模,针对类失衡建模的处理,可以参考本人博客中对于类失衡问题的解释,算作是对于该项目的一个扩展。 模型方面也可供各位下载者进行扩展:神经网络、C50、svm、随机森林等。

python数据预处理实例-对pandas进行数据预处理的实例讲解

参加kaggle数据挖掘比赛,就第一个赛题Titanic的数据,学习相关数据预处理以及模型建立,本博客关注基于pandas进行数据预处理过程。包括数据统计、数据离散化、数据关联性分析引入包和加载数据import pandas as pdimport numpy as nptrain_df =pd.read_csv("../datas/train.csv") # train se...

weixin_39676348的博客 822

用MCP扩展Cursor的5种神奇用法:从文件操作到网页抓取实战

本文深入探讨了如何利用MCP(Model Context Protocol)扩展Cursor AI编程助手,解锁五种高效实用场景。从文件系统操作、网页内容抓取,到数据库查询、Figma设计稿对接,乃至构建自定义MCP服务器,文章通过实战案例展示了如何将Cursor从代码编辑器升级为能理解并操作工作环境的智能助手,显著提升开发效率与自动化水平。

weixin_29231027的博客 315

GEOPHYSICS 投稿避坑指南:从格式规范到双盲评审的实战解析

本文详细解析了GEOPHYSICS期刊投稿的全流程避坑指南,从格式规范、数据声明到双盲评审的实战策略。特别强调了数学公式排版、图表制作标准以及投稿系统的隐藏关卡,帮助作者避免常见错误,提升投稿成功率。

weixin_30606461的博客 236

机器学习11/100天-KNN实践

github: 100DaysOfMLCode 1.导入常用库 import numpy as np import matplotlib.pyplot as plt import pandas as pd 2.导入数据集 dataset = pd.read_csv('Social_Network_Ads.csv') X = dataset.iloc[:, [2, 3]].values y = d...

zombee0的博客 299

论文笔记:基于对比学习的半监督分类学习方法

论文阅读笔记_CCSSL

weixin_46224126的博客 3312

(二)SVM项目:客户购买预测数据

【问题描述】 根据一个客户的性别,年龄,和工资的数据,可以预测他是否会购买你的产品。 根据客户的信息,预测他是否倾向于购买我们的产品。根据预测结果进行不同的处理,从而减少公司的推广成本。 数据说明 数据集是csv文件。 User ID --用户ID Gender --用户性别 Age --用户年龄 EstimatedSalary --估计薪资 Purchased --是否购买(布尔量) import numpy as np import matplotlib.pyplot as plt import p

ccc_bioinfo的博客 1956

华为昇腾Atlas 200I DK A2实战:从开箱到运行首个AI应用

本文详细介绍了华为昇腾Atlas 200I DK A2开发板从开箱到运行首个AI应用的全过程。包括硬件准备、系统烧录、开发板连接方案、AI应用运行及性能优化技巧,帮助开发者快速上手部署AI项目,提升开发效率。

weixin_27038245的博客 590

树莓派4B系统安装及SSH远程控制(简单易操作)

​自从2022年4月树莓派官网更新了RaspberryPiImager版本v1.7.2后,便不再支持自行建立ssh文件,并用默认用户名pi和密码raspberry的方式进行远程控制(亲测不行,输密码时一直access denied)。但是该版本软件提供了烧录系统前设置ssh用户及密码功能。本文记录了系统安装和SSH远程操作步骤。........................

机械人的代码路 5789

机器学习笔记 (五)逻辑回归

逻辑回归逻辑回归 逻辑回归

InfiniteYuan 2044

自然二进制数与格雷码的相互转换

自然二进制数与格雷码两者优势: 自然二进制数的编码方式简单明了,容易理解,在加减运算中能够直接进行,同时十分方便进行一些位运算操作(如移位、取反等)。 格雷码计数时只有一位变化,可有效减少计数器状态的冗余转换,同时在传输数据时能够减小传输错误的概率,此外带权重编码处理更加方便。 在一定程度上自然二进制数与格雷码优缺点基本相反,综上所述,自然二进制数和格雷码各有优劣之处,需要根据具体应用场景选择合适的编码方式。简单来说,在计数器和编码器中,倾向于使用格雷码;而在进行加减运算时,则倾向于使用自然二进制数。

Loudrs的博客 7491

机器学习一百天 第四天笔记 逻辑回归

逻辑回归 逻辑回归被用来处理不同的分类问题,这里的目的是预测当前被观察对象属于哪个组,他会提供一个离散的二进制输出结果 如何工作 逻辑回归使用基础逻辑函数通过估算概率来测量因变量(我们想要预测的标签)和一个或者多个自变量之间的关系 Sigmoid 函数 Sigmoid 函数是一个s形曲线,可以实现任意真实值映射为值域范围为0-1的值,但从来不局限于这些限制 图片来自于唐戈 S函数 - 维基百科,...

lvweishuai001的博客 839

Unreal 从入门到进阶 之 如何实现Pixel Streaming

Unreal Engine 5 (UE5) 的 Pixel Streaming 是一项基于云端的实时流媒体技术,允许将 UE5 应用的高质量图形渲染结果通过 WebRTC 协议传输到用户的浏览器或轻量级设备,同时将用户输入(如鼠标、键盘、触控)回传到服务器处理。UE的插件相对比较好用,但是就是环境下载总是失败。希望这篇文章对你有所帮助。

TxNet 1368

【Simulink教程案例19】基于simulink的扩频通信系统建模与仿真

扩频是一种应用于数字调制信号的调制技术,可以提高传输信号的带宽。扩频通信具有抗干扰能力强,扩频增益越大,抗干扰能力越强。而且扩频通信具有很强的保密性,扩频后信号近似白噪声,功率谱密度也很低。扩频通信可用于多址通信。扩频调制有如下三个特点:① 扩频后信号的带宽远大于信号所需的带宽② 使用扩频码进行扩频调制,扩频码与信号中的数据相互独立③ 在接收端,通过将接收信号与扩频码的同步副本进行相关,实现解扩。

FPGA/MATLAB学习教程/源码/项目合作开发 2196

机器学习基础100天---day04 逻辑回归

该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试寻找用户年龄与预估薪资之间的某种相关性,以及他是否购买SUV的决定。...

向阳争渡 363

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

机器学习100天-6-逻辑回归探究

数据集 | 社交网络 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试寻找用户年龄与预估薪资之间的某种相关性,以...

ifeng 389

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

逻辑回归 (Logistic Regression)

逻辑回归 (Logistic Regression) ​ Logistic Regression 数据集 | 社交网络 (The DataSet | Social Network ) ​ DataSet This dataset contains information of users in a socia...

Crafts_Neo的博客 541

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

机器学习100天练习(4)-逻辑回归

机器学习100天练习(4)-逻辑回归 逻辑回归讲解 模型 输出为 0 或 1 假设 => y = Wx + b hΘ(x) = sigmoid (Z) Sigmoid 函数 本质是将数据拟合到线性回归模型中,然后用logistic函数预测目标分类因变量。 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买

多米尼克的小风车 666

100天机器学习(100-Days-Of-ML)day4,5,6提升版

本系列为100天机器学习学习笔记。详细请参考下方作者链接: 100天机器学习github: https://github.com/MLEveryday/100-Days-Of-ML-Code Day4,5,6–logistic regression 数据集 | 社交网络 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV...

三年研究生能改变多少 560

100天项目 Day 6 逻辑回归例子

       第四天的时候学习逻辑回归可使用sigmod函数做一个比较合理的预测,因为sigmod函数值域范围恰好为【-1,1】,而且导数比较容易得到。今天就用一个简单的例子来说明。        该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购...

li9669的博客 330

【机器学习个人笔记】part5——用sklearn实现逻辑回归

【机器学习个人笔记】part5——逻辑回归 逻辑回归虽然名字是“回归”,但实际是“分类“,如图所示就是最简单的逻辑回归: 实例: 场景:根据用户的年龄、薪水来预测其是否购买SUV 数据集: 简单分析一下这个数据集,第一列是用户id,第二列是用户性别,本次实验不考虑这两个特征。我们希望通过根据用户的年龄和薪水预测用户是否会购买SUV,根据预测结果对用户进行针对性推销。那么age和salary将是...

ycarry2017的博客 737

Day_4 逻辑回归

数据集 | 社交网络 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试寻找用户年龄与预估薪资之间的某种相关...

xyk_hust的博客 349

《机器学习100天》学习笔记——Day 4-6_Logistic_Regression(逻辑回归)

100-Days-Of-ML-Code 中文版《机器学习100天》 GitHub :https://github.com/MLEveryday/100-Days-Of-ML-Code 数据集 | 社交网络 部分数据集如下图所示: 该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。...

qq_41929011的博客 492
上一篇: 各种Optimizer梯度下降优化算法回顾和总结
下一篇: 吴恩达 deeplearning.ai 经典总结:28 张精炼图+思维导图,开放下载!
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值