微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么LinearRegression的预测值与真实值完全相同?

如何解决为什么LinearRegression的预测值与真实值完全相同?

我正在通过LinearRegression进行回归,并得到均方误差0。我认为应该有一些偏差(至少很小)。您能解释一下这种现象吗?

## Import packages
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import urllib.request

## Import dataset
urllib.request.urlretrieve('https://raw.githubusercontent.com/data-science-FMI/ml-from-scratch-2019/master/data/house_prices_train.csv','house_prices_train.csv')
df_train = pd.read_csv('house_prices_train.csv')
x = df_train['GrLivArea'].values.reshape(1,-1)
y = df_train['SalePrice'].values.reshape(1,-1)
print('The explanatory variable is',x)
print('The variable to be predicted is',y)

## Regression
reg = LinearRegression().fit(x,y)
mean_squared_error(y,reg.predict(x))
print('The MSE is',mean_squared_error(y,reg.predict(x)))
print('Predicted value is',reg.predict(x))
print('True value is',y)

结果是

The explanatory variable is [[1710 1262 1786 ... 2340 1078 1256]]
The variable to be predicted is [[208500 181500 223500 ... 266500 142125 147500]]
The MSE is 0.0
Predicted value is [[208500. 181500. 223500. ... 266500. 142125. 147500.]]
True value is [[208500 181500 223500 ... 266500 142125 147500]]

解决方法

尽管评论肯定正确,因为模型在其自身的训练集上的得分将被夸大,但不太可能通过线性回归(尤其是仅具有一项功能)获得完美的拟合。

您的问题是您不正确地重塑了数据:reshape(1,-1)制作了形状为(1,n)的数组,因此您的模型认为它具有n功能和n输出仅包含一个样本,完美拟合的多元线性回归也是如此。尝试用reshape(-1,1)代替x,不要重塑y

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。