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

如何用Scikit-Learn GridSearchCV单次fit获取精确率、召回率、F1值

Scikit-Learn GridSearchCV 多指标调参单次拟合实现方案

完全不需要循环多次调用fit和predict方法,GridSearchCV原生支持传入多评价指标列表,单次拟合就能记录所有参数组合对应的三类指标得分。

具体实现步骤

1. 初始化时配置多指标参数

GridSearchCV的scoring参数支持直接传入包含多个评价指标标识的列表,你需要的三类指标对应的内置标识分别为'precision'、'recall'、'f1',如果是多分类任务,可以根据需求补充平均策略后缀,比如'f1_macro'、'recall_weighted'等。
示例代码:

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
import pandas as pd

# 定义待搜索的参数网格
param_grid = {
    'C': [1, 10, 100],
    'kernel': ['linear', 'rbf']
}

# 定义多评价指标列表
scoring_list = ['precision', 'recall', 'f1']

# 初始化GridSearchCV
grid_search = GridSearchCV(
    estimator=SVC(random_state=42),
    param_grid=param_grid,
    scoring=scoring_list,
    refit='f1', # 可选:指定按f1指标筛选最优模型后拟合全量数据,仅需得分可设为False
    cv=5,
    n_jobs=-1
)

# 单次调用fit完成所有交叉验证计算
grid_search.fit(X_train, y_train)

2. 访问所有参数组合的各指标得分

拟合完成后,所有交叉验证结果都存储在cv_results_属性中,该字典针对每个你指定的指标都会生成对应的得分字段,包括单折得分、平均得分、得分标准差,直接提取即可,也可以转成DataFrame做结构化展示:

# 转换为DataFrame便于查看
cv_results = pd.DataFrame(grid_search.cv_results_)

# 提取参数组合+三类指标的平均交叉验证得分
target_result = cv_results[['params', 'mean_test_precision', 'mean_test_recall', 'mean_test_f1']]
print(target_result)

补充说明

  • 多分类任务必须指定指标的平均策略,否则默认是二分类指标计算逻辑,会触发报错
  • 若仅需要统计各参数组合的指标得分,不需要输出最优模型,可以将refit参数设为False,减少计算量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:06:03