3.4.8.6. 使用RidgeCV和LassoCV设置正则化参数

加载糖尿病数据集

from sklearn.datasets import load_diabetes
data = load_diabetes()
X, y = data.data, data.target
print(X.shape)
(442, 10)

使用默认超参数计算交叉验证分数

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import Ridge, Lasso
for Model in [Ridge, Lasso]:
model = Model()
print(f"{Model.__name__}: {cross_val_score(model, X, y).mean()}")
Ridge: 0.410174971340889
Lasso: 0.3375593674654274

我们计算交叉验证分数作为alpha的函数,alpha是Lasso和Ridge正则化强度的表示

import numpy as np
import matplotlib.pyplot as plt
alphas = np.logspace(-3, -1, 30)
plt.figure(figsize=(5, 3))
for Model in [Lasso, Ridge]:
scores = [cross_val_score(Model(alpha), X, y, cv=3).mean() for alpha in alphas]
plt.plot(alphas, scores, label=Model.__name__)
plt.legend(loc="lower left")
plt.xlabel("alpha")
plt.ylabel("cross validation score")
plt.tight_layout()
plt.show()
plot linear model cv

脚本总运行时间:(0分钟0.389秒)

由Sphinx-Gallery生成的图库