首页 > 解决方案 > 岭回归中的手动交叉验证导致每个 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).......]

我不明白为什么。

标签: pythonpandasmachine-learning

解决方案


是不是因为你用rd作为Ridge回归的名字,但是在计算mse的时候,你用的是rf.predict(可能是你之前训练过的东西?)


推荐阅读