【问题标题】:How to calculate the RMSE on Ridge regression model如何计算岭回归模型的 RMSE
【发布时间】:2019-07-03 22:04:02
【问题描述】:

我对数据集执行了岭回归模型 (数据集链接:https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data) 如下:

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split

y = train['SalePrice']
X = train.drop("SalePrice", axis = 1)

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.30)
ridge = Ridge(alpha=0.1, normalize=True)
ridge.fit(X_train,y_train)
pred = ridge.predict(X_test)

我使用 sklearn 中的指标库计算了 MSE

from sklearn.metrics import mean_squared_error
mean = mean_squared_error(y_test, pred) 
rmse = np.sqrt(mean_squared_error(y_test,pred)

我得到的 MSE = 554084039.54321 和 RMSE = 21821.8 的值非常大,我试图了解我的实现是否正确。

【问题讨论】:

  • 请提供您的mean_sqaured_error 和RMSE 的代码、您如何拆分数据、您获得的MSE 的值是什么以及您的数据集的链接/描述。
  • @SzymonMaszke 我已经用代码更新了问题

标签: python machine-learning scikit-learn sklearn-pandas mse


【解决方案1】:

RMSE 实现

您的RMSE 实现是正确的,当您采用sklearn 的mean_squared_error 的平方根时,很容易验证这一点。

我认为您缺少右括号,确切地说:

rmse = np.sqrt(mean_squared_error(y_test,pred)) # the last one was missing

高错误问题

由于模型无法很好地模拟变量和目标之间的关系,您的 MSE 很高。请记住,每个错误都是 2 的幂,因此在价格上关闭 1000 会使价值飙升至 1000000

您可能想用自然对数 (numpy.log) 修改价格并将其转换为对数刻度,这是一种常见的做法,尤其是对于这个问题(我假设您正在做 House Prices: Advanced Regression Techniques),请参阅可用的内核指导。用这种方法,你不会得到这么大的值。

最后但同样重要的是,检查Mean Absolute Error 以了解您的预测并不像看起来那么糟糕。

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 2016-06-28
    • 1970-01-01
    • 2015-08-13
    • 2016-01-29
    • 2021-12-19
    • 1970-01-01
    • 2019-10-21
    • 2018-12-06
    相关资源
    最近更新 更多