2744557306 发表于 2024-3-15 11:12

使用 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]
查看完整版本: 使用 sklearn 进行 LASSO 回归