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

GridSearchCV最优参数估计时访问cv_results_报KeyError:0问题

报错原因

KeyError: 0的触发逻辑非常明确:

  1. GridSearchCV的cv_results_属性是字典类型,而非可以通过数字下标直接索引的列表。它的存储逻辑是:键为固定的结果字段名,值为按参数组合顺序排列的结果数组,字典中不存在名为0的键,直接写cv_results_[0]自然会触发键错误。
  2. 你代码里使用的.parameters、.cv_validation_scores、.mean_validation_scores是scikit-learn 0.20版本之前的废弃字段,新版本已经完全移除,就算索引方式改对了也会报属性/键错误。
正确代码写法

cv_results_中对应你需要的结果的合法键名如下:

  • params:存储所有参数组合的配置,值为列表,每个元素对应一组参数的字典
  • split{n}_test_score:第n折交叉验证的验证集得分,n从0开始计数,折数和你设置的cv参数一致
  • mean_test_score:每组参数对应所有折验证得分的平均值

取单组参数结果的示例(以索引为0的第一组参数为例,5折交叉验证场景):

# 确保GridSearchCV已经完成fit训练
# 取第一组参数的配置
print(grid.cv_results_['params'][0])

# 取第一组参数所有折的验证得分
fold_scores = []
for i in range(grid.cv):
    fold_scores.append(grid.cv_results_[f'split{i}_test_score'][0])
print(fold_scores)

# 取第一组参数的平均验证得分
print(grid.cv_results_['mean_test_score'][0])

如果需要查看所有参数组合的结果,可以直接遍历:

param_total = len(grid.cv_results_['params'])
for idx in range(param_total):
    print(f"参数组合{idx+1}:", grid.cv_results_['params'][idx])
    print("平均验证得分:", grid.cv_results_['mean_test_score'][idx])

如果只需要最优参数的对应结果,不需要手动遍历索引,直接调用内置属性即可:

  • grid.best_params_:返回最优得分对应的参数配置
  • grid.best_score_:返回最优参数对应的平均交叉验证得分

内容的提问来源于stack exchange,提问作者Aayushi Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:03:24