机器学习之逻辑回归(Day3)

1.如何求解分类问题

(1)抛出问题

先给出一个例子:根据余额,判断小明是否去看电影。
训练数据:
余额1、2、3、4、5:看电影(正样本)
余额为-1、-2、-3、-4、-5:不看电影(负样本)
在图形中表示:
在这里插入图片描述
对于这些离散的数据,基本求解方法是找到f(x):在这里插入图片描述

(2)利用线性回归求解

根据上节所学,可以训练出线性回归的相关模型,如图所示
在这里插入图片描述
此时发现,效果还蛮好的,但是其存在局限性,当样本量变大以后,准确率就会下降,如图所示。
在这里插入图片描述
在这里插入图片描述
因此,解决离散数据的分类问题,尤其是二分类,线性回归不是一个好的解决办法,所以我们引出了逻辑回归。

(3)利用逻辑回归求解

先给出逻辑回归方程及图形表示
在这里插入图片描述
在这里插入图片描述
可以发现,逻辑回归很好的拟合了数据,出色的完成了分类任务。
在这里插入图片描述

2.逻辑回归

(1)原理分析

用于解决分类问题的一种模型。根据数据特征或属性,计算其归属于某一类的概率P(X),根据概率数值判断其所属类别。主要应用场景:二分类问题。
数学表达式(也称逻辑回归方程)
在这里插入图片描述
其中,y为类别结果,P为概率分布函数,x为特征值。

(2)当分类任务变得复杂(存在两个、三个或多个变量影响)

在这里插入图片描述
如上图有x1和x2影响,此时的逻辑回归方程
在这里插入图片描述
或者
在这里插入图片描述
在这里插入图片描述
上面两个分类任务,最重要的是找到决策边界g(x)

(3)逻辑回归求解

之前在线性回归当中,我们介绍了利用最小化损失函数求解该类问题,同样我们也需找到逻辑回归的损失函数(J)
在这里插入图片描述
将P(X)带入方程。采用梯度下降法(类似线性回归,感兴趣的读者可以到上一篇博客学习)求解最小值。
注意:其实计算机底层都封装好了这些算法,是应用过程中只需敲几行代码就OK了。这只是帮助大家更好的理解其中的原理。

3.代码实现

(1)分类散点可视化

#画图看决策边界效果,可视化模型表现:
from matplotlib import pyplot as plt
plt.plot(X1,X2_boundary)
passed = plt.scatter(X1[mask],X2[mask])
failed = plt.scatter(X1[~mask],X2[~mask],marker='^')

(2)逻辑回归模型使用

在这里插入图片描述

#模型训练
from sklearn.linear_model import LogisticRegression
lr_model = LogisticRegression()
lr_model.fit(x,y)
#边界函数系数
theta1,theta2 = LR.coef_[0][0],LR.coef_[0][1]
theta0 = LR.intercept_[0]
#对新数据做预测
predictions = lr_model.predict(x_new)

(3)建立新数据集

在这里插入图片描述
从两幅图对比得知,建立新数据集会使训练的模型更加准确。

X_new_dic = {'X1':X1,'X2':X2,'X1^2':X1_2,'X2^2':X2_2,'X1X2':X1_X2}
X_new = pd.DataFrame(X_new_dic)

(4)模型评估

#计算准确率
from sklearn.metrics import accuracy_score
y_predict = LR.predict(X)
accuracy = accuracy_score(y,y_predict)

准确率越接近1越好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值