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

最佳答案

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以查看您的预测并不像看起来那样糟糕。

关于python - 如何在Ridge回归模型上计算RMSE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54613144/

10-12 23:18