逻辑回归是用来解决二分类问题的
什么是分类问题
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644829456882-image.png)
这是多种不同的动物以及它们不同的特征
每种动物属于不同的种类
有一条新的数据 知道它的特征 这些特征都属于特征列 预测这个是哪个种类的动物
种类那列是属于目标列
这种判断每条数据所属类别的问题属于分类问题
二分类问题
当分类问题的目标列只有两种情况时属于二分类问题
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644829852125-image.png)
比如把动物类别修改为是否为哺乳类
回归和分类的区别
不要被逻辑回归的回归二字所欺骗
逻辑回归其实是解决的分类问题
回归模型的输出是连续的
分类模型的输出是离散的
举例说明:
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644830090150-image.png)
左图:
x轴表示每小时卖出咖啡的数量
y轴代表通过卖咖啡所赚的钱
y值是连续的值
x值都对应一个y值
当预测值y值是一个连续的值 称这类问题为回归问题
右图:
红色部分表示除去成本之后依然不能盈利
蓝色部分表示除去成本之后开始盈利
这个图表示是否盈利 两种情况
所以是一个二分类问题
逻辑回归是什么
逻辑回归=线性回归+sigmoid函数
什么是线性回归
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644830412478-image.png)
用一条直线简单的拟合下自变量和因变量之间的关系
怎么把回归变成分类呢
比如当这家咖啡点y小于130的时候是亏钱的
大于130是盈利的
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644830590029-image.png)
映射到x轴 大于14表示盈利 小于14表示亏钱
通过这样一个划分 就把回归问题变成了一个分类问题
什么是sigmoid函数呢
解决的是怎么把回归问题转换成分类问题的转换函数
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644831073781-image.png)
当输入值趋向于无穷小的时候函数值越逼近于0
当输入值趋向于无穷大的时候函数值越逼近于1
当输入值是0的时候 函数值为0.5
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644831457276-image.png)
线性回归的预测结果y值可能是从负无穷到正无穷的任意的数
将结果作为sigmoid函数的输入
当y值很小的时候对应的sigmoid函数的值是逼近0的值
当y为0的时候作为sigmoid的输入 对应的sigmoid函数值是0.5
当y值非常大的时候 对应的sigmoid函数输出值是逼近1的数
经过sigmoid函数将回归函数得出的结果变成从0到1之间的某一个数
当sigmoid函数小于0.5的时候 会预测为0
当sigmoid函数大于0.5的是时候 会预测为1
这样就得到了一个二分类的结果
公式
线性回归: z=w*x+b
sigmoid函数:
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644831853902-image.png)
把线性回归函数的输出z作为sigmoid函数的z得到了逻辑回归
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644831861292-image.png)
怎么求解逻辑回归呢
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644832158671-image.png)
通过损失函数
求预测值跟实际值相似程度的一个函数
损失函数越小,模型越好
代码
引入依赖包
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644832415524-image.png)
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644832447176-image.png)
官网样例数据
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644832685573-image.png)
这是libsvm格式的
第一列是label列
这是一个是二分类问题 目标列只有0/1
后面是特征列
每一个值的:前面是第几个特征
:后面表示这个特征的值是多少
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644832793128-2.jpg)
1、先引入数据
2、再对数据进行训练集和测试集的划分
训练集和测试集都是已知的数据
测试集虽然是已知的 拿它和预测结做对比来评估模型的好坏
3、数据划分完之后 进行训练数据
4、训练完之后把特征和预测处理的值打印出来了
5、打印算法模型的评价结果
运行结果
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644833206992-image.png)
SparseVector(4,{0:4.8,1:3.0,2:1.4,3:0.1},0.0)
这个数据的意思 这4个特征预测出来的结果是0
逻辑回归很重要
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2022-2-14/1644833482376-image.png)
这是一个神经网络的图 其中的每一个节点都是一个逻辑回归