【发布时间】:2021-11-24 04:53:33
【问题描述】:
TLDR 可能是this 的问题,但是我们如何使用sklearn 来解决这个问题?如果图中只显示我为每个 lambda 或 alpha 所做的 CV 的平均值,我就可以了。
大家好,如果我理解正确,我们需要在训练集上进行交叉验证,以选择alpha(如sklearn)进行岭回归。特别是,我想在训练集上执行重复 5 次的 5 倍 CV(所以 25 个 CV)。
我想要对alphas中的每个alpha做的是:
from numpy import logspace as logs
alphas = logs(-3, 3, 71) # from 10^{-3}, 10^{-2.9}, ..., to 10^3
我在完成每个训练集的所有 CV 后获得 25 个(不同的?)验证集上的 MSE,以及测试集上的 MSE,然后从 25 个 MSE 中取平均值以进行绘图或报告。
问题是我不知道该怎么做。这是从我们通常无法观察到的验证集中检索 25 个 MSE 的正确代码吗?
from sklearn.linear_model import RidgeCV, Ridge
from sklearn.model_selection import cross_val_score as CVS
# 5 fold now repeated all 5 times
cvs = RKF(n_splits=5, n_repeats=5, random_state=42)
# each alpha input as al
# the whole data set is generated with different RNG each time
# if you like you may take any existing data sets to explain whether I did wrong
# for each whole data set, the training set is split using the same random state
CVS(Ridge(alpha=al, random_state=42), X_train, Y_train, scoring="neg_mean_squared_error", cv=cvs)
如果不是,我应该使用cross_validate 甚至RidgeCV 来获得我想要的MSE?提前致谢。
【问题讨论】:
标签: python scikit-learn linear-regression cross-validation mse