首页 > 解决方案 > sklearn 线性回归似乎不适合

问题描述

我正在整理一个来自 sklearn 的简单 OLS 示例,我注意到奇怪的结果。下面是结果

from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression

model = Pipeline([('linear', LinearRegression(fit_intercept=True))])

n = 100
x = np.linspace(0, 10, n)
eps = np.random.randn(n)
y = 0.5 * x + -2.5 + eps

model.fit(y.reshape(-1, 1), x.reshape(-1, 1))
yhat = model.predict(x.reshape(-1, 1))
plt.scatter(x, y)
plt.plot(x, yhat, 'r')

在此处输入图像描述

奇怪的是,OLS 的合身度如此之差。在将其发布到主要的 sklearn 问题跟踪器之前,只需寻找其他人来重现此内容。我的版本在下面

sklearn=0.22.1
python=3.6.1

标签: pythonscikit-learn

解决方案


这是你做错的地方

model.fit(y.reshape(-1, 1), x.reshape(-1, 1))

改成:

model.fit(x.reshape(-1, 1), y.reshape(-1, 1))

推荐阅读