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

如何从GridSearchCV的每次参数迭代中获取F1分数?

解决GridSearchCV中获取F1分数的问题

你看到的那些split*_test_score和mean_test_score列其实就是你要的F1-micro分数——因为你已经在GridSearchCV里指定了scoring='f1_micro',GridSearchCV会直接把这个指标作为交叉验证的测试集评分,只是列名没有显式带上“F1”字样而已。

具体含义说明

  • split0_test_score到split4_test_score:对应5折交叉验证中,每一轮测试集的F1-micro分数
  • mean_test_score:5轮F1-micro分数的平均值
  • std_test_score:5轮分数的标准差

让列名更直观的方法

如果你希望导出的CSV里有明确的“F1分数”相关列名,可以在生成DataFrame后手动重命名:

df = pd.DataFrame(clf.cv_results_)
# 重命名分数列
rename_mapping = {
    'split0_test_score': 'split0_f1_micro',
    'split1_test_score': 'split1_f1_micro',
    'split2_test_score': 'split2_f1_micro',
    'split3_test_score': 'split3_f1_micro',
    'split4_test_score': 'split4_f1_micro',
    'mean_test_score': 'mean_f1_micro',
    'std_test_score': 'std_f1_micro'
}
df.rename(columns=rename_mapping, inplace=True)
df.to_csv('result.csv', index=False)

更灵活的多指标配置(可选)

如果之后需要同时查看多个评分指标,可以把scoring参数设为字典,这样生成的列名会直接带指标名称,不用手动重命名:

clf = GridSearchCV(
    estimator=DecisionTreeClassifier(),
    param_grid=params,
    scoring={'f1_micro': 'f1_micro', 'accuracy': 'accuracy'}  # 可添加多个指标
)
clf.fit(X, y)
df = pd.DataFrame(clf.cv_results_)
# 此时会出现mean_test_f1_micro、split0_test_f1_micro等明确列名
df.to_csv('result.csv', index=False)

快速验证列名

如果不确定哪些列对应F1分数,可以先打印所有结果列的键:

print(clf.cv_results_.keys())

你会看到所有和评分相关的列,其中包含你设置的f1_micro对应的分数列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:17:18