python - 岭回归中的手动交叉验证导致每个 lambda 的 MSE 相同
问题描述
我正在构建一个 Ridge 回归,并尝试通过前向链接交叉验证来调整正则化参数,因为我正在处理时间序列数据。我的代码如下:
mse_avg_ridge = []
for alph in range(0,100,1):
mse = []
rd = Ridge(random_state=0, alpha=alph/100)
for i in range(30,153,30): ##there are 153 observations
X_cross = X[0:i]
Y_cross = Y[0:i]
rd.fit(X_cross, Y_cross)
X_cross_test = X[i:153]
Y_cross_test = Y[i:153]
mse.append(np.mean(np.square(rf.predict(X_cross_test)-Y_cross_test)))
mse_avg_ridge.append((alph/100,np.mean(mse)))
不知何故,mse_avg_ridge
为每个 alpha 提供了相同的值,如下所示:
[(0.0, 0.0006005114839775559), (0.01, 0.0006005114839775559), (0.02, 0.0006005114839775559), (0.03, 0.0006005114839775559), (0.04, 0.0006005114839775559), (0.05, 0.0006005114839775559), (0.06, 0.0006005114839775559), (0.07, 0.0006005114839775559), (0.08, 0.0006005114839775559), (0.09, 0.0006005114839775559), (0.1, 0.0006005114839775559), (0.11, 0.0006005114839775559).......]
我不明白为什么。
解决方案
是不是因为你用rd作为Ridge回归的名字,但是在计算mse的时候,你用的是rf.predict(可能是你之前训练过的东西?)
推荐阅读
- node.js - 如何使用叠加创建 Mapkit Web 快照?
- java - 如何将枚举的值从输入转换为枚举?
- c - 条件执行不适用于这种代码情况?
- php - 在业务逻辑中使用try、catch、异常处理
- javascript - 在灯塔期间重定向请求或注入脚本
- reactjs - 如何在反应中使用 Axios 进行基本身份验证
- mysql - 为 MySQL 创建白名单
- sql - 任何学说映射表都必须具有同名的实体吗?
- ios - 如何在 iOS 中设置 UIImageView 的高度等于 videoPreviewLayer
- haskell - 如何在haskell中找到带有XMonad.Util.Run runProcessWithInput输出的列表的索引?