【发布时间】:2017-12-19 06:38:18
【问题描述】:
使用以下代码,我只想拟合一条回归曲线来拟合未按预期工作的样本数据。
X = 10*np.random.rand(100)
y= 2*X**2+3*X-5+3*np.random.rand(100)
xfit=np.linspace(0,10,100)
poly_model=make_pipeline(PolynomialFeatures(2),LinearRegression())
poly_model.fit(X[:,np.newaxis],y)
y_pred=poly_model.predict(X[:,np.newaxis])
plt.scatter(X,y)
plt.plot(X[:,np.newaxis],y_pred,color="red")
plt.show()
难道不应该有一条完全适合数据点的曲线吗?因为训练数据(X[:,np.newaxis])和用来预测y_pred的数据是一样的(也是(X[:,np.newaxis])。
如果我改为使用 xfit 数据来预测模型,则结果符合预期...
...
y_pred=poly_model.predict(xfit[:,np.newaxis])
plt.scatter(X,y)
plt.plot(xfit[:,np.newaxis],y_pred,color="red")
plt.show()
那么这种行为的问题和解释是什么?
【问题讨论】:
标签: python scikit-learn linear-regression pipeline