线性回归预测值为负数且大十进制

linear regression prediction values are in negative and big decimal

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(Xtrain, ytrain)
pred=lr.predict(Xtest)
pred

我的Ytest值是这样的

Price_euros
248 675.0
556 255.0
693 2590.0
387 1369.0
781 2350.0
... ...
468 1699.0
508 1323.0
1187    691.0
1010    949.0
1053    979.0

但是 预测值类似于:

0   7.547000e+02
1   -7.503793e+10
2   2.169000e+03
3   -4.296977e+09
4   1.020596e+10
... ...
256 -7.759706e+09
257 -5.626814e+09
258 7.135000e+02
259 8.365000e+02
260 8.423000e+02

是小数问题吗?如何四舍五入预测值和预测值不应该是负数是吗??

均方误差为 6.255155054767432e+20

我认为这不正确

线性回归是一个仿射模型,因为预测的形式是

f(x) = <w, x> + b = SUM_i w_i x_i + b

这在实践中意味着总是有一些输入,它会输出负值。和你训练什么无关,是一个属性的线性模型。

1   -7.503793e+10
2   2.169000e+03
3   -4.296977e+09
4   1.020596e+10
... ...
256 -7.759706e+09
257 -5.626814e+09
258 7.135000e+02
259 8.365000e+02
260 8.423000e+02

所有 e+02e+03 都是非常符合您的数据范围的结果,因为这些是百上千。现在为什么有些真的不合时宜?同样,因为它是一个线性模型,它实际上是将您的每个输入乘以某个权重,然后将它们相加。它是一个非常死板、有限的模型class,因此为了尽量减少错误,有时需要犯大错误。