我已经对数据集执行了岭回归模型
(链接到数据集: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/