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

问题描述

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

例如下面的代码给了我一个包含20个结果的数组,它们具有不同的负平均绝对误差,我很想找到能给我这个(最小)错误的预测变量,然后在我的测试集上使用该预测变量。 / p>

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的确会搜索不同组的超参数并返回最佳估计器:

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参数,以确保在整个数据集中重新拟合最佳模型并返回。