第五章、逻辑回归:一、为什么需要逻辑回归? 1. sklearn中的逻辑回归 1.1 LogisticRegression

一、为什么需要逻辑回归?

线性关系的拟合效果很好、计算速度快、分类不是固定的0,1,而是类概率数字。
抗噪能力强。

1. sklearn中的逻辑回归

在这里插入图片描述
评估类:
在这里插入图片描述

1.1 LogisticRegression

参数:
在这里插入图片描述

  1. penalty:l1 或者 l2,表示是哪种正则方式。默认l2.若是l1,则参数solver只能使用liblinear。但L1正则化会将参数压缩为0,L2正则化只会让参数尽量小。
  2. C :必须是一个大于0的浮点数,默认0.1。c越小,正则化的效果越强,对损失函数惩罚越重。

我们使用“损失函数"这个评估指标,**来衡量参数p的优劣,即这一组参数能否使模型在训练集上表现优异。**如果用一组参数建模后,模型在训练集上表现良好,那我们就说模型表现的规律与训练集数据的规律一致,拟合过程中的损失很小,损失函数的值很小,这一组参数就优秀;相反,如果模型在训练集上表现糟糕,损失函数就会很大,模型就训练不足,效果较差,这一组参数也就比较差。即是说,我们在求解参数p时,追求损失函数最小,让模型在训练数据上的拟合效果最优,即预测准确率尽量靠近100%

  • 损失函数如下:
    在这里插入图片描述
    由于我们追求损失函数的最小值,让模型在训练集上表现最优,可能会引发另一个问题:**如果模型在训练集上表示优秀,却在测试集上表现糟糕,模型就会过拟合。**虽然逻辑回归和线性回归是天生欠拟合的模型,但我们还是需要控制过拟合的技术来帮助我们调整模型,对逻辑回归中过拟合的控制,通过正则化来实现。
  • 正则化:
    在这里插入图片描述
    第一个是绝对值之和的平均数,第二个是平方和开根的平均数。

代码:

from sklearn.liner_model import LogisticRegression as lr
from sklearn.datasets import load_breast_cancer as lbc
import numpy as np
import matplotlib.pyplot as pt
from sklearn.model_selection import train_test_split as ttp
from sklean.metrics import accuracy_score as acs

data=lbc()//字典
x=data.data
y=data.target
print(s.shape) //569,30

lr1=lr(penalty="l1",solver="liblinear",C=0.5,max_iter=1000)
lr2=lr(penalty="l2",solver="liblinear",C=0.5,max_iter=1000)

lr1=lr1.fit(x,y)
print(lr1.coef_)//p
print(lr1.coef_!=0).sum(axis=1)//p不等于0的个数

lr2=lr2.fit(x,y)
print(lr2.coef_)//不会出现0

哪个效果更好?
在这里插入图片描述
在这里插入图片描述
横坐标是c的值,由图可得,在该图l2较好。

猜你喜欢

转载自blog.csdn.net/qq_53982314/article/details/131260735