1. sklearn中与逻辑回归有关的API

在这里插入图片描述
【注意】虽然逻辑回归名字中有“回归”,但是它是用来解决二分类、多分类问题的算法。它的名字应该叫做“对数几率回归”比较好。

2. 代码实现
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np
# 获取数据集
data = load_breast_cancer()
x = data.data
y = data.target
# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(x, y,test_size=0.3, random_state=420)
l1 = [] # 在训练集上的表现
l2 = [] # 同上
l1test = [] # 在测试集上的表现
l2test = [] # 同上
# 建模,对惩罚参数C进行调节
for i in np.linspace(0.05, 1, 19):
    lrl1 = LogisticRegression(penalty='l1',solver='liblinear',C=i,max_iter=1000)
    lrl2 = LogisticRegression(penalty='l2',solver='liblinear',C=i,max_iter=1000)
    
    lrl1 = lrl1.fit(x_train, y_train)
    l1.append(accuracy_score(lrl1.predict(x_train), y_train))
    l1test.append(accuracy_score(lrl1.predict(x_test), y_test))
    
    lrl2 = lrl2.fit(x_train, y_train)
    l2.append(accuracy_score(lrl2.predict(x_train), y_train))
    l2test.append(accuracy_score(lrl2.predict(x_test),y_test))
    
graph = [l1,l2,l1test,l2test] # 每个子数组中有19个值
color = ['green', 'black', 'lightgreen', 'gray']
label = ["L1", 'L2', 'L1test', 'L2test']

# 绘制学习曲线
plt.figure(figsize=(6,6))
for i in range(len(graph)): # 有4条折线
    plt.plot(np.linspace(0.05, 1, 19), graph[i], color=color[i], label=label[i])
plt.legend(loc=4) # loc=4,将图例放在右下角
plt.show()

效果:在这里插入图片描述
最上面是在训练集上的结果,针对下面在测试集上的结果,可以看出C在O.8、0.9以后反而下降了,而训练集中越来越大,这样过拟合会越来越严重。


【PS】这是我看看sklearn菜菜的视频学习笔记~

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐