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

Random Forest模型打印得分报错:'str'对象无mean_test_score属性

问题原因

你遇到的报错是新旧版本scikit-learn的搜索类返回值结构不匹配导致的,核心错误点有两个:

  • 你调用report函数时传入的random_search.cv_results_是字典结构,不是旧版本废弃的grid_scores_对象列表。直接遍历字典默认会遍历键名(都是字符串),所以循环内的score变量实际是字符串类型的键,自然没有mean_test_score属性。
  • 你使用的report函数是针对scikit-learn 0.20版本之前的grid_scores_返回值编写的,当前版本的cv_results_需要按字典键访问对应值。
修复后的代码

直接替换原report函数即可,适配当前版本的cv_results_结构:

import numpy as np

def report(cv_results, n_top=3):
    # 按测试平均分从高到低排序,取前n_top结果的索引
    top_indices = np.argsort(cv_results['mean_test_score'])[::-1][:n_top]
    for i, idx in enumerate(top_indices):
        print("Model with rank: {0}".format(i + 1))
        print("Mean Test score: {0:.3f} (std: {1:.3f})".format(
              cv_results['mean_test_score'][idx],
              cv_results['std_test_score'][idx]))
        print("Parameters: {0}".format(cv_results['params'][idx]))
        print("")

调用方式保持不变:report(random_search.cv_results_)

额外说明
  • scikit-learn 0.22及以上版本的cv_results_默认自带std_test_score字段,无需手动计算多折得分的标准差
  • 旧版本的grid_scores_、cv_validation_scores属性已被正式移除,不要继续使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:39:04