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

随机森林回归交叉验证:默认scores含义与自定义评分方法问询

随机森林回归器交叉验证相关问题解答

问题1:回归任务默认交叉验证中的scores具体指代什么?

在scikit-learn里,当你给回归模型(比如你用的RandomForestRegressor)做交叉验证时,如果没手动指定评分指标,默认用的是R²系数(决定系数)。

简单解释下:R²衡量的是模型能解释目标变量方差的比例——

  • 取值范围是(-∞, 1],越接近1说明模型拟合效果越好;
  • 若R²为0,意味着模型预测效果和直接取目标变量平均值差不多;
  • 要是出现负数,那模型表现还不如直接用均值当预测结果。

所以你拿到的scores数组里的每个元素,就是对应交叉验证折上模型算出的R²分数。

问题2:如何将均方误差(MSE)等函数设置为评分指标?

当然可以,这里有两种常用方法来指定自定义评分指标:

方式1:直接用scikit-learn内置的评分字符串

scikit-learn为回归任务提供了不少内置的评分字符串,比如针对均方误差,你可以用neg_mean_squared_error(注意是负均方误差)——这是因为scikit-learn的API默认要求“评分越高越好”,但MSE本身是越小越好,所以取负值来适配这个逻辑。

示例代码:

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score

rf = RandomForestRegressor(n_estimators=100, criterion='mse', random_state=1, n_jobs=-1)
# 指定负均方误差作为评分指标
scores = cross_val_score(rf, X_trainr, y_train, scoring='neg_mean_squared_error')
# 取负数绝对值得到常规MSE
mse_scores = -scores

方式2:用make_scorer自定义评分函数

如果想更灵活控制(比如直接用原始MSE,或者自定义其他指标),可以用sklearn.metrics.make_scorer来包装评分函数:

示例代码:

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_squared_error, make_scorer

rf = RandomForestRegressor(n_estimators=100, criterion='mse', random_state=1, n_jobs=-1)
# 包装均方误差函数,设置greater_is_better=False表示指标越小越好
mse_scorer = make_scorer(mean_squared_error, greater_is_better=False)
scores = cross_val_score(rf, X_trainr, y_train, scoring=mse_scorer)
# 取负得到常规MSE
mse_scores = -scores

# 也可以直接得到正的MSE(此时cross_val_score会按“越小越好”处理分数)
mse_scorer_positive = make_scorer(mean_squared_error, greater_is_better=True)
scores_positive = cross_val_score(rf, X_trainr, y_train, scoring=mse_scorer_positive)

这样就能根据需求,把MSE或者其他自定义指标作为交叉验证的评分标准啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:00:39