如何在Ridge回归模型上计算RMSE

时间:2019-02-10 03:38:53

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

我已经对数据集执行了岭回归模型 (链接到数据集: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值,我试图了解我的实现是否正确。

1 个答案:

答案 0 :(得分:1)

RMSE实施

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

尽管如此,我认为您仍然缺少右括号:

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

高错误问题

您的MSE很高,因为模型无法很好地模拟变量和目标之间的关系。请记住,每个错误的取值为2的幂,因此在价格飞涨1000时,会将值100000取消。

您可能希望使用自然对数(numpy.log)修改价格并将其转换为对数比例,这是一种常见的做法,尤其是针对此问题(我假设您正在使用House Prices: Advanced Regression Techniques),请参阅可用的内核以获取指导。使用这种方法,您将不会获得这么大的价值。

最后但并非最不重要的一点是,请检查Mean Absolute Error,以确保您的预测并不像看起来那样可怕。