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

GridSearchCV使用多评分参数报错ValueError,请求技术协助

解决GridSearchCV多评分参数报错的问题

嘿,我太懂你碰到的这个坑了——明明照着官方文档用列表设置多个评分参数,结果却弹出ValueError: scoring value should either be a callable, string or None的错误,其实问题出在两个关键地方:sklearn版本兼容和遗漏了refit参数。

为啥会报错?

在scikit-learn 0.23版本之前,GridSearchCV的scoring参数只认单个值——字符串、可调用函数或者None,根本不支持列表/字典形式的多评分设置。如果你用的是旧版本,自然会触发这个错误。

另外,就算你的sklearn版本够新,支持多评分了,也必须加refit参数!因为当你同时用多个指标评估模型时,GridSearch需要明确知道基于哪个指标来挑选最佳模型,不然它会懵圈,照样报错。

一步一步解决

  1. 先升级你的scikit-learn
    打开终端或者命令行,执行这条命令把版本升到0.23及以上:

    pip install --upgrade scikit-learn
    
  2. 给GridSearchCV加上refit参数
    比如你想用accuracy来选最优模型,代码改成这样:

    scoring = ['accuracy', 'precision']
    # 关键:refit指定用accuracy作为最佳模型的选择依据
    gs = GridSearchCV(pipe, params, cv=5, scoring=scoring, refit='accuracy')
    gs.fit(text, goal)
    

    要是你想用自定义逻辑选模型,refit也可以传一个可调用函数,但大部分场景下直接指定指标名称就够了。

  3. 用字典设置评分(可选,更清晰)
    如果你想给每个评分指标起个好记的别名,用字典形式设置scoring也很方便,后续看结果的时候一目了然:

    scoring = {'分类准确率': 'accuracy', '精确率': 'precision'}
    gs = GridSearchCV(pipe, params, cv=5, scoring=scoring, refit='分类准确率')
    gs.fit(text, goal)
    

验证一下

改完代码运行后,你可以用gs.cv_results_查看所有指标的交叉验证结果,用gs.best_estimator_拿到基于refit指标选出的最佳模型,完美解决问题~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:39:17