【问题标题】:rmse cross validation using sklearn使用 sklearn 进行 rmse 交叉验证
【发布时间】:2021-11-24 16:40:40
【问题描述】:
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))

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

rmse = 121

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    如果您想要 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)))
    

    【讨论】:

    • 由于我是新人,无法为您的评论投票,但感谢您的帮助
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • from sklearn.metrics import mean_squared_error mse = mean_squared_error(y_test, y_pred) rmse = np.sqrt(mse) print('RMSE: %f' % rmse)m_test = np.mean(y_test) print('MEAN: %f' % m_test) 没听错吗?
    • 是的 - 约定与我的略有不同,但看起来不错。最终目的是将 RMSE 与平均测试分数进行比较,您显然正在这样做。
    • 非常感谢!
    猜你喜欢
    • 2015-06-11
    • 2018-10-02
    • 2013-12-13
    • 2017-06-19
    • 2012-12-31
    • 2017-03-16
    • 2018-08-16
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多