2744557306 发表于 2024-3-15 17:22

岭回归

代码执行了以下操作:

1.导入所需库:   import numpy as np

   import pandas as pd

   import matplotlib.pyplot as plt

   from sklearn.linear_model import Ridge, RidgeCV2.定义源数据:   df = pd.DataFrame({

       'x1': ,

       'x2': ,

       'y': ,

   })创建了一个包含两个自变量(x1 和 x2)和一个因变量(y)的 DataFrame。

3.将数据转换为数组格式:   X = np.array(df[['x1', 'x2']])  # 特征集

   y = np.array(df[['y']])          # 目标集4.遍历不同的正则化参数 ( k ):   k_array = np.logspace(-4, 1.5, 100)

   x1_list, x2_list = [], []

   for k in k_array:

       model = Ridge(alpha=k).fit(X, y)

       x1_list.append(model.coef_)

       x2_list.append(model.coef_)遍历了一系列正则化参数 ( k ),对每个参数值使用 Ridge 回归模型拟合数据,并将得到的系数存储到 x1_list 和 x2_list 中。

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()绘制了岭迹图,展示了不同正则化参数 ( k ) 下,系数 ( b1 ) 和 ( b2 ) 的变化趋势。

6.自动匹配最佳 ( k ) 值:   model2 = RidgeCV().fit(X, y)使用 RidgeCV 自动匹配最佳正则化参数 ( k ) 并拟合数据。

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_)输出了最佳模型的截距、系数、拟合优度以及对应的最佳正则化参数 ( k )。
通过这段代码,你可以对 Ridge 回归模型进行正则化,并选择最佳的正则化参数来提高模型的泛化能力。同时,岭迹图可以帮助你直观地观察不同正则化参数下模型系数的变化趋势。





页: [1]
查看完整版本: 岭回归