2

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

4

1 回答 1

3

RMSE 实施

您的RMSE实现是正确的,当您采用 sklearn's 的 sqaure 根时,这很容易验证mean_squared_error

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

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

高错误问题

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

您可能想用自然对数 ( numpy.log) 修改价格并将其转换为对数刻度,这是一种常见的做法,尤其是对于这个问题(我假设您正在做房价:高级回归技术),请参阅可用的内核以获得指导。使用这种方法,您将不会获得如此大的值。

最后但同样重要的是,检查平均绝对误差以查看您的预测并不像看起来那么糟糕。

于 2019-02-10T18:27:37.963 回答