导入需要用到的库

import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt

加载鸢尾花数据集

X, y = load_iris(return_X_y=True)

划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=206)

初始化四个空列表用于存储不同正则化参数下的训练集和测试集精度

l1, l2, l1test, l2test = [], [], [], []

遍历不同的正则化参数

for i in np.linspace(0.05, 1, 19): # L1正则化 lrl1 = LogisticRegression(penalty='l1',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))

# L2正则化
lrl2 = LogisticRegression(penalty='l2',solver='liblinear',C=i,max_iter=1000)
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))

打印L1和L2正则化的系数

print('L1正则化结果:\n',lrl1.coef_,'\nL2正则化结果:\n',lrl2.coef_)

将训练集和测试集精度以及正则化参数分别存储到列表result中

result = [l1,l2,l1test,l2test]

定义绘图所需的颜色和标签

color = ['green','red','yellow','black'] label = ['L1','L2','Lltest','L2test']

绘制图形

plt.figure(figsize=(8,4)) for i in range(4): plt.plot(np.linspace(0.05,1,19),result[i],color[i],label=label[i]) plt.legend() # 显示图例 plt.title('不同正则化参数下的模型精度') # 设置标题 plt.xlabel('正则化参数C') # 设置x轴标签 plt.ylabel('精度') # 设置y轴标签 plt.show() # 显示图形

逻辑回归模型正则化参数C对模型精度的影响分析

原文地址: https://www.cveoy.top/t/topic/nlgk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录