python - 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
解决方案
这是你做错的地方
model.fit(y.reshape(-1, 1), x.reshape(-1, 1))
改成:
model.fit(x.reshape(-1, 1), y.reshape(-1, 1))
推荐阅读
- jquery - Owl Carousel 2 如何在每张幻灯片上显示所有幻灯片标题
- docker - docker compose build 因 IO 超时而失败
- office-addins - 从 Onenote 页面检索和更新 NoteTag
- python - 我该怎么做才能从一个 api 的两个端点获取 json 数据
- javascript - 幻灯片的预加载图像没有按预期更快地呈现
- c# - 通用方法不调用接口的实现成员
- c++ - 如何根据字体高度和字体名称获取文本宽度?
- javascript - 在 vs-code 扩展中保存文档时触发
- python-3.x - 如何用python处理ArrowInvalid错误
- github - 是否可以从 github 的公共存储库中进行私人发布?