scikit-learn 线性回归 K 折交叉验证

scikit-learn linear regression K fold cross validation

我想 运行 线性回归以及使用 sklearn 库对我的训练数据进行 K 折交叉验证以获得最佳回归模型。然后我计划使用在我的测试集上返回的平均误差最低的预测器。

例如,下面的一段代码给出了 20 个结果的数组,这些结果具有不同的负平均绝对误差,我有兴趣找到给我这个(最小)误差的预测变量,然后在我的测试集上使用该预测变量.

sklearn.model_selection.cross_val_score(LinearRegression(), trainx, trainy, scoring='neg_mean_absolute_error', cv=20)

cross_val_score 中没有“给我这个(最小)错误的预测器”这样的东西,所有估计器都在 :

sklearn.model_selection.cross_val_score(LinearRegression(), trainx, trainy, scoring='neg_mean_absolute_error', cv=20) 

相同。

您可能希望检查 GridSearchCV 确实会搜索不同的超参数集和 return 最佳估计器:

from sklearn import datasets
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import GridSearchCV
X,y = datasets.make_regression()
lr_model = LinearRegression()
parameters = {'normalize':[True,False]}
clf = GridSearchCV(lr_model, parameters, refit=True, cv=5)
best_model = clf.fit(X,y)

请注意 refit=True 参数,确保最佳模型在整个数据集上重新拟合并 returned。