多评分配置下GridSearchCV的cv_results无std_test_score键触发KeyError
KeyError触发核心原因
当GridSearchCV传入多指标评分配置(也就是你代码里把scoring设为包含mcc、accuracy、balanced_accuracy的字典)时,cv_results_的键命名规则和单指标场景完全不一样:
- 单指标模式(
scoring只传一个评分字符串或者单个scorer对象)下,才会生成不带指标名的通用键,比如mean_test_score、std_test_score——你之前查的旧写法就是适配这种场景的 - 多指标模式下,所有交叉验证结果键都会加上你定义的评分名当前缀,根本不会生成通用的
std_test_score键,直接索引自然报KeyError。
你当前配置下的正确取值写法
因为你设了refit='mcc',要拿最优参数对应的交叉验证标准差,得用带指标前缀的键:
grid_search.cv_results_['std_test_mcc'][grid_search.best_index_]
多指标场景的键名对应关系
所有结果键都按mean/std_test_你定义的指标名的规则生成,没有例外:
- mcc指标:平均分
mean_test_mcc,标准差std_test_mcc - accuracy指标:平均分
mean_test_accuracy,标准差std_test_accuracy - balanced_accuracy指标:平均分
mean_test_balanced_accuracy,标准差std_test_balanced_accuracy
避坑小技巧
拿不准有哪些可用键的时候,直接打印看就行,别死记:
print(grid_search.cv_results_.keys())
内容的提问来源于stack exchange,提问作者Atirag
相关产品推荐
相关产品推荐

