关于SKLearn中neg_root_mean_squared_error在RFECV中的评分疑问
结果异常原因与判断逻辑说明
- 你看到的正数评分和你设置的
neg_root_mean_squared_error没有关联:你传入RFECV的scoring参数仅用于交叉验证过程中筛选最优特征子集,调用rfe.score(X_train, y_train)实际执行的是你传入的基回归器的默认评分逻辑。scikit-learn中所有内置回归器的默认评分指标为决定系数R²,取值范围为(-∞, 1],拟合效果越好得分越接近1,因此返回正数属于正常情况。 - 现有评分的判断标准:如果你没有修改过基回归器的默认评分逻辑,当前得到的R²得分数值越大代表模型效果越好,和负RMSE的判断逻辑完全相反。
- 如果你需要用
neg_root_mean_squared_error评估最终模型效果,可以用以下两种方式实现:- 手动计算RMSE:
from sklearn.metrics import mean_squared_error y_pred = rfe.predict(X_train) # 得到RMSE,数值越小效果越好 rmse = mean_squared_error(y_train, y_pred, squared=False) - 直接调用对应评分器计算:
from sklearn.metrics import get_scorer scorer = get_scorer("neg_root_mean_squared_error") # 得到负RMSE,数值越大(越接近0)效果越好 neg_rmse = scorer(rfe, X_train, y_train)
- 手动计算RMSE:
内容的提问来源于stack exchange,提问作者wildcat89
相关产品推荐
相关产品推荐

