sklearn中cross_val_score默认评分指标?回归模型评分相关疑问
回归模型交叉验证相关问题解答
1. cross_val_score结果均值的计算方式
你用的是10折交叉验证(cv=10),scikit-learn会把数据集随机分成10个互斥子集:
- 每次用9个子集训练模型,剩下1个做测试,得到1个独立评分
- 重复10次后拿到10个评分值
- 最终的均值就是这10个评分的算术平均值,标准差则是这10个值的样本标准差,用来体现模型在不同数据子集上的性能波动程度。
2. 0.84是否属于合格的模型性能
没有绝对的“合格”标准,得结合任务场景判断:
- 如果是复杂回归任务(比如预测房价、用户消费额),0.84的R²(默认评分)已经算不错的表现,说明模型能解释84%的目标变量方差
- 如果是简单线性关系预测(比如根据边长算正方形面积),这个分数可能偏低,这类任务理论上可以接近满分
- 更合理的判断方式是对比基线模型(比如线性回归)的得分,如果你的随机森林模型比基线高出不少,那就是合格甚至优秀的;也可以参考同领域类似任务的公开基准分数。
3. 更优的回归模型评分方式
除了默认的R²,还有几种贴合不同场景的评分方式:
- 均方误差(MSE)/根均方误差(RMSE):MSE是预测值与真实值差的平方的平均值,RMSE是其平方根,和目标变量单位一致,能直观反映预测的误差幅度,适合关注误差绝对值的场景
- 平均绝对误差(MAE):是预测值与真实值差的绝对值的平均值,对异常值的鲁棒性比MSE强,适合数据中有较多极端值的情况
- 可解释方差分数:衡量模型能解释的目标变量方差比例,和R²类似,但当模型预测均值与真实值均值不同时,结果会有差异
- 自定义评分函数:用
sklearn.metrics.make_scorer封装自定义逻辑,比如加权MAE(给重要样本更高权重),适合处理不平衡或有特殊业务需求的数据集
4. cross_val_score的默认评分指标
在回归任务中,cross_val_score的默认评分指标是R²(决定系数),公式为:R² = 1 - (sum((y_true - y_pred)²) / sum((y_true - y_true.mean())²))
它衡量模型能够解释的目标变量方差比例,取值范围通常在(-∞,1]之间,越接近1说明模型拟合效果越好。
内容的提问来源于stack exchange,提问作者Mehan Alavi
相关产品推荐
相关产品推荐

