You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn GridSearchCV回归器性能评估:数据拆分与指标疑问

GridSearchCV调优GradientBoostingRegressor常见问题解答

问题1:设置cv=5后,是否仍需使用train_test_split拆分数据,将X_train、y_train传入grid_search.fit?

必须拆分数据,原因如下:

  • GridSearchCV的cv参数是用来在训练集内部做交叉验证,筛选最优超参数的。如果直接把全量数据传入fit(),会导致交叉验证的验证集数据参与了调参过程,相当于模型提前“见过”测试数据,最终评估的泛化性能会严重高估,完全失去参考价值。
  • 正确流程:
    1. 先用train_test_split把数据集拆分为训练集(X_train/y_train)和独立测试集(X_test/y_test);
    2. 将X_train/y_train传入grid_search.fit(),让GridSearchCV在训练集内部做5折交叉验证选最优参数;
    3. 最终用X_test/y_test评估最优模型的真实泛化能力。

问题2:GridSearchCV中回归器的默认评估指标是什么?为何执行grid_search.score(X,y)与grid_search.best_score_得到的结果差异较大,如何正确获取模型的交叉验证性能?

默认评估指标

对于回归任务,GridSearchCV如果不指定scoring参数,会直接使用你传入的回归器的score方法。GradientBoostingRegressor的默认score方法是R²(决定系数),取值范围是(-∞,1],越接近1表示模型拟合效果越好。

结果差异大的原因

  • grid_search.best_score_:是交叉验证过程中,最优参数组合在各折验证集上的得分的平均值,是对模型泛化能力的无偏估计;
  • grid_search.score(X,y):是用整个传入的数据集(如果是全量数据,就包含了交叉验证用过的验证集)去评估已经用全量X_train训练好的最佳模型,相当于用模型见过的数据做评估,结果会偏高,和交叉验证的无偏估计自然差异大。

正确获取交叉验证性能的方式

  • 直接用grid_search.best_score_:这是交叉验证给出的最优模型的平均验证得分,能反映模型的泛化能力;
  • 查看grid_search.cv_results_:这个字典里包含了每一组超参数在各折的得分、均值、标准差等,能帮你更全面地分析调参过程;
  • 最终验证泛化能力:一定要用拆分好的独立测试集,调用grid_search.best_estimator_.score(X_test, y_test),这才是模型在未见过数据上的真实性能。

内容的提问来源于stack exchange,提问作者Jason Shi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:30:59