Sklearn线性回归输出

时间:2020-11-08 12:49:57

标签: python scikit-learn linear-regression

我正在尝试使用线性回归将抛物线拟合到一个简单的生成的数据集中,但是无论我做什么,我从模型中直接得到的曲线都变成了难以理解的混乱。

ls /usr/lib/x86_64-linux-gnu/ | grep libIlmImf

libIlmImf-2_3.so.24
libIlmImf-2_3.so.24.0.0
libIlmImf.a
libIlmImf.so
libIlmImfUtil-2_3.so.24
libIlmImfUtil-2_3.so.24.0.0
libIlmImfUtil.a
libIlmImfUtil.so

此代码输出以下图形:

Code output

但是,当我通过简单地更改下面的代码行从模型产生的系数手动生成图时,我得到的正是我想要的结果。

Manual output

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

#xtrain, ytrain datasets have been generated earlier

model = LinearRegression(fit_intercept = True)
model.fit(np.hstack([xtrain, xtrain**2]), ytrain)  
xfit = np.linspace(-3,3,20)  
yfit = model.predict(np.hstack([xtrain, xtrain**2]))
plt.plot(xfit, yfit)
plt.scatter(xtrain, ytrain, color="black")

这似乎有点笨拙,因此我想学习如何正确生成曲线。我认为问题一定是我数据的离散性,但我无法自行解决。

1 个答案:

答案 0 :(得分:1)

这是您的错误已修复:

yfit = model.predict(np.hstack([xfit, xfit**2]))

在您的代码中,您在X轴上绘制xfit值,而在Y轴上绘制f(xtrain)