深入浅出python机器学习_4.3.1_岭回归的原理 4.3.2_岭回归的参数调节
发布日期:2021-05-10 09:17:28 浏览次数:12 分类:精选文章

本文共 3030 字,大约阅读时间需要 10 分钟。

���������������������

������������������������������������������������������������������������������������������������

import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes

���������������������������������������������������������������������������

X, y = load_diabetes().data, load_diabetes().target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)

���������������������������������������������������

lr = LinearRegression().fit(X_train, y_train)

������������������������������������

print('������������������������������������{:.2f}'.format(lr.score(X_train, y_train)))
print('������������������������������������{:.2f}'.format(lr.score(X_test, y_test)))

��������������������=1���������������������

ridge = Ridge(alpha=1).fit(X_train, y_train)
print('���������������������������������{:.2f}'.format(ridge.score(X_train, y_train)))
print('���������������������������������{:.2f}'.format(ridge.score(X_test, y_test)))

��������������������������������������������

ridge10 = Ridge(alpha=10).fit(X_train, y_train)
print('�����������������������������������=10������{:.2f}'.format(ridge10.score(X_train, y_train)))
print('�����������������������������������=10������{:.2f}'.format(ridge10.score(X_test, y_test)))

��������������������������������������������

ridge01 = Ridge(alpha=0.1).fit(X_train, y_train)
print('�����������������������������������=0.1������{:.2f}'.format(ridge01.score(X_train, y_train)))
print('�����������������������������������=0.1������{:.2f}'.format(ridge01.score(X_test, y_test)))

��������������������������������������������������������������������

ridge01_2 = Ridge(alpha=0.1).fit(X_train, y_train)
print('���������������{} {}'.format(round(ridge01_2.score(X_train, y_train), 4), round(ridge01_2.score(X_test, y_test), 4)))
i = 0.1
while round(ridge01_2.score(X_train, y_train), 4) > round(ridge01_2.score(X_test, y_test), 4):
i += 0.01
ridge01_2 = Ridge(alpha=i).fit(X_train, y_train)
if round(ridge01_2.score(X_train, y_train), 100) <= round(ridge01_2.score(X_test, y_test), 100):
print(i)
print('�����������������={:.3f}������'.format(i), end='')
print('{:.4f} {:.4f}'.format(ridge01_2.score(X_train, y_train), ridge01_2.score(X_test, y_test)))
break

������������������������������������

plt.plot(ridge.coef_, 's', label='Ridge alpha=1')
plt.plot(ridge10.coef_, '^', label='Ridge alpha=10')
plt.plot(ridge01.coef_, 'v', label='Ridge alpha=0.1')
plt.plot(lr.coef_, 'o', label='Linear Regression')
plt.hlines(0, 0, len(lr.coef_))
plt.xlabel('Coefficient Index')
plt.ylabel('Coefficient Magnitude')
plt.legend()
plt.show()

���������������������

������������������������������������0.43
������ ������������������������������0.47
���������������������������������0.52
���������������������������������0.47
...

���������������������������������������������������������������������������������������������������������

上一篇:python sklearn.learning_curve 什么是学习曲线?
下一篇:python中numpy.ndarray与list的区别?以及用matplotlab.pyplot绘图时的注意事项。

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月24日 07时01分39秒