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

sklearn实现RMSE交叉验证的代码正确性及RMSE相关问题咨询

问题解答

1. 代码正确性分析

你这段代码存在3个需要调整的问题:

  • 遗漏依赖导入:代码中用到了np(numpy)但缺少import numpy as np的导入语句,直接运行会报错
  • 模型拟合逻辑冗余:cross_val_score会自动在每折交叉验证的训练子集上拟合传入的模型,不需要提前拟合regressor,提前拟合的参数也不会被调用,属于无效操作
  • 指标计算不匹配:你使用的scoring='neg_mean_absolute_error'对应的是负平均绝对误差,取绝对值后得到的是MAE(平均绝对误差),不是你后面提到的RMSE(均方根误差),如果要计算RMSE,需要把scoring参数改为'neg_root_mean_squared_error'

修正后的代码示例:

import numpy as np
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score

# regressor直接传入初始化后的未拟合模型即可
cv = KFold(n_splits=10, random_state=1, shuffle=True)
scores = cross_val_score(regressor, X, y, scoring='neg_root_mean_squared_error',
                         cv=cv, n_jobs=-1)
# 输出10折交叉验证的平均RMSE
print(np.mean(np.abs(scores)))

2. RMSE取值是否可以大于100

完全可以,RMSE的取值没有固定上限,它的量级完全取决于你的因变量y的数值范围:

  • 比如你的y是预测房屋总价,取值范围在10万到1000万区间,那RMSE达到几千、几万都是正常情况
  • 只有当你提前对y做了0-1归一化/标准化处理后,RMSE才会被限制在较小的数值区间
    你得到的121的RMSE是否合理,只需要和你的y的取值区间对比即可,比如y的最大值为1000的话,121的误差属于合理范围。

3. RMSE的适用场景

RMSE两种用法都支持:

  • 直接评估模型整体优劣:前提是你所在的业务场景有明确的可接受误差阈值,比如你预测电商用户的月消费额,业务上允许的平均误差是200元,那RMSE如果低于200就符合上线要求,高于200就需要继续优化
  • 不同模型之间效果对比:这是更常用的场景,注意对比的前提是所有模型都在完全相同的数据集、相同的交叉验证策略下计算RMSE,数值越小说明模型的预测误差越小,效果越好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:36:03