为什么我从GridSearchCV得到的R^2分数与cross_val_score的结果差别很大?(sklearn, python)
我正在使用GridSearchCV来选择一个回归模型。一旦模型训练完成,我就用
predictor = GridSearchCV(Pipeline(...), params={...},
cv=10, scoring='r2')
predictor.fit(X, y)
estimator = predictor.get_params()['estimator']
把选中的回归模型提取出来。接着,我用
cross_val_score(estimator, X, y,
cv=10, scoring='r2')
来运行cross_val_score
,但是我得到的R^2值总是比predictor.best_score_
低大约5个百分点。这是为什么呢?
1 个回答
4
在使用 cross_val_score
时,应该用 predictor.best_estimator_
作为你的模型。这是参数最好的那个模型。你选择的方式可能是用默认参数得到的初始模型。你可以试着把这个初始模型也放进 cross_val_score
里,然后比较一下结果。