繁体   English   中英

使用 sklearn 进行 rmse 交叉验证

[英]rmse cross validation using sklearn

from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score

cv = KFold(n_splits=10, random_state=1, shuffle=True)

scores = cross_val_score(regressor, X, y, scoring='neg_mean_absolute_error',
                         cv=cv, n_jobs=-1)
np.mean(np.abs(scores))

回归量是拟合的 model,X 是独立特征,y 是相关特征。 代码对吗? 我也很困惑 rmse 可以大于 100 吗? 我从一些回归模型中得到诸如 121 之类的值。 rmse 是用来告诉您您的 model 通常有多好还是仅告诉您 model 与其他型号相比有多好?

有效值 = 121 在此处输入图像描述

如果您想要 RMSE,为什么要使用平均绝对误差进行评分? 将其更改为:

scores = cross_val_score(regressor, X, y, scoring = 'neg_mean_squared_error',
                         cv = cv, n_jobs = -1)

由于 RMSE 是均方误差的平方根,我们必须这样做:

np.mean(np.sqrt(np.abs(scores)))

可以使用sklearn.metrics计算 RMSE 值,如下所示:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(test, predictions)
rmse = math.sqrt(mse)
print('RMSE: %f' % rmse)

在解释方面,您需要将 RMSE 与测试数据的平均值进行比较,以确定 model 的准确度。 标准误差是衡量给定样本的平均值与真实总体平均值相比的准确程度。

例如,与平均值 100 相比,RMSE 为 5 是一个很好的分数,因为 RMSE 大小相对于平均值来说非常小。

另一方面,与平均值 2 相比,RMSE 为 5 并不是一个好的结果 - 与测试平均值相比,平均值估计值太宽了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM