使用XGBoost回归器配合sklearn learning_curve的性能指标疑问
相关问题解答
1. learning_curve返回的tr_scs、test_scs默认指标说明
你调用learning_curve时未指定scoring参数,scikit-learn会默认使用传入模型的score()方法作为评估标准。对于XGBRegressor回归器,score()方法返回的是决定系数R²,取值范围通常在0~1之间,数值越高代表拟合效果越好。
这里需要注意:XGBoost默认的reg:squarederror是模型训练阶段优化的损失函数,和scikit-learn评估环节用的默认指标没有关联,因此默认返回的tr_scs、test_scs结果并不是以平方误差为单位。
2. 从cross_val_score结果计算均方误差的方法
scikit-learn的评分规则统一遵循「得分越高模型效果越好」的设计,因此neg_mean_squared_error返回的是负的均方误差,你只需对结果取反即可得到常规的均方误差数值,示例如下:
# 转换为正的均方误差 mse_scores = -cv_results # 计算5折交叉验证的平均均方误差 avg_mse = mse_scores.mean()
如果你希望learning_curve也输出均方误差相关的结果,可以在调用时指定scoring="neg_mean_squared_error",之后同样对tr_scs、test_scs取反即可得到平方误差单位的性能结果。
内容的提问来源于stack exchange,提问作者haneulkim
相关产品推荐
相关产品推荐

