如何使用交叉验证获得最佳系数向量

时间:2015-05-05 03:27:28

标签: python numpy machine-learning scikit-learn

我在数据集上运行岭回归。我做了5折交叉验证。所以基本上我的数据集分为5个列车和5个测试折叠。

这就是我在scikit中的表现:

from sklearn import cross_validation
k_fold=cross_validation.KFold(n=len(tourism_train_X),n_folds=5) 

我像这样设置正则化参数:

#Generating alpha values for regularization parameters
n_alphas = 200
alphas = np.logspace(-10, -1, n_alphas)

现在,我怀疑的是,每列火车和测试折叠 我这样做。

ridge_tourism = linear_model.Ridge()
for a in alphas:
    ridge_tourism.set_params(alpha=a)
    index=0
    for train_indices, test_indices in k_fold:
        ridge_tourism.fit(tourism_train_X[train_indices], tourism_train_Y[train_indices])  # Fitting the model
        coefs.append(ridge_tourism.coef_)

问题是它会给出每个alpha中五个训练倍数中每一个的系数向量。我想要的只是每个alpha选择的最佳系数向量。我们怎么做到的?我们如何从5个列车组中选择哪个系数向量最终报告为该α?

1 个答案:

答案 0 :(得分:1)

对于每个alpha值,取5倍验证的验证错误的平均值。然后,您将能够获得平均验证错误v。的曲线。 α。选择alpha值,它会给出最低的平均验证错误。