使用 sklearn 进行 LASSO 回归
1.导入所需库:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso, LassoCV
2.定义源数据:
df = pd.DataFrame({
'x1': ,
'x2': ,
'y': ,
})
创建了一个包含 x1、x2 和 y 列的 DataFrame,作为原始数据。
3.将数据转换为数组格式:
X = np.array(df[['x1', 'x2']])
y = np.array(df[['y']])
将特征和目标变量分别转换为 NumPy 数组格式。
4.遍历不同的 alpha 值,计算 Lasso 回归模型的拟合结果:
k_array = np.logspace(-4, 1.5, 100)
x1_list, x2_list = [], []
for k in k_array:
model = Lasso(alpha=k).fit(X, y)
x1_list.append(model.coef_)
x2_list.append(model.coef_)
使用 Lasso 回归模型,遍历不同的正则化参数 alpha 值,计算不同 alpha 值下 x1 和 x2 的系数。
5.绘制岭迹图:
plt.scatter(k_array, x1_list)
plt.scatter(k_array, x2_list)
plt.plot(k_array, x1_list, label='x1')
plt.plot(k_array, x2_list, label='x2')
plt.legend()
使用 plt.scatter() 绘制不同 alpha 值下 x1 和 x2 的系数散点图,并使用 plt.plot() 绘制岭迹图,分别标记了 x1 和 x2 的系数曲线,并添加图例。
6.使用 LassoCV 自动选择最佳 alpha 值:
model2 = LassoCV().fit(X, y)
使用 LassoCV 进行交叉验证,自动选择最佳的正则化参数 alpha。
7.输出模型参数和评估结果:
b0 = model2.intercept_
b1, b2 = model2.coef_, model2.coef_
print('y = {:.4f} + {:.4f}*x1 + {:.4f}*x2'.format(b0, b1, b2))
print('R_square =', model2.score(X, y))
print('k =', model2.alpha_)
输出拟合的线性模型的截距、系数以及 R_squared 值,还输出了最佳的正则化参数 alpha。
这段代码通过 Lasso 回归模型拟合了给定的数据,并展示了不同 alpha 值下的系数变化,最后选择了最佳的 alpha 值进行拟合,并输出了拟合结果和评估指标。
页:
[1]