为什么我从GridSearchCV得到的R^2分数与cross_val_score的结果差别很大?(sklearn, python)

2 投票
1 回答
6411 浏览
提问于 2025-04-18 18:38

我正在使用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 里,然后比较一下结果。

撰写回答