首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取误差:形状不对齐,状态模型和简单的二维线性回归

获取误差:形状不对齐,状态模型和简单的二维线性回归
EN

Stack Overflow用户
提问于 2020-12-12 22:03:35
回答 1查看 2.8K关注 0票数 1
代码语言:javascript
复制
import numpy as np
import statsmodels.api as sm


list21 = [-0.77, -0.625, -0.264, 0.888, 1.8, 2.411, 2.263, 2.23, 1.981, 2.708]
list23 = [-1.203, -1.264, -1.003, -0.388, -0.154, -0.129, -0.282, -0.017, -0.06, 0.275]

X1 = np.asarray(list21)
Y1 = np.asarray(list23)
    
x = X1.reshape(-1, 1)
y = Y1.reshape(-1, 1)

   
model = sm.OLS(x, y)
fit = model.fit()

y_pred = model.predict(x)

错误的内容如下:

代码语言:javascript
复制
--> 161     y_pred = model.predict(x)

ValueError: shapes (10,1) and (10,1) not aligned: 1 (dim 1) != 499 (dim 0)

在过去的半小时里,我的头一直撞在墙上,请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 22:22:55

您正在将预测分配给错误的变量。使用:

代码语言:javascript
复制
model = sm.OLS(x, y)
fit = model.fit()
y_pred = fit.predict(x)

或使用

代码语言:javascript
复制
model = sm.OLS(x, y).fit()
y_pred = model.predict(x)

在这两种情况下:将预测赋值给与fit()一起使用的变量

编辑

要回答您的问题,为什么这条线通过零:您没有定义一个拦截,这是您可以用sm.add_constant。请参阅以下文档:https://www.statsmodels.org/dev/examples/notebooks/generated/ols.html

应用到您的代码中:

代码语言:javascript
复制
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt

list21 = [-0.77, -0.625, -0.264, 0.888, 1.8, 2.411, 2.263, 2.23, 1.981, 2.708]
list23 = [-1.203, -1.264, -1.003, -0.388, -0.154, -0.129, -0.282, -0.017, -0.06, 0.275]

x = np.asarray(list21)
y = np.asarray(list23)
X = sm.add_constant(x)
model = sm.OLS(y,X)
results = model.fit()
y_pred = results.predict(X)
plt.scatter(list21,list23)
plt.plot(x,y_pred)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65270275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档