【发布时间】:2019-05-11 04:42:34
【问题描述】:
我有一个dataframe,我试图在其中运行statsmodel.api OLS 回归。
它正在打印摘要。但是当我使用 predict() 函数时,它给了我一个错误 -
形状 (75,7) 和 (6,) 未对齐:7 (dim 1) != 6 (dim 0)
我的代码是:
X = newdf.loc[:, newdf.columns != 'V-9'].values
y = newdf.iloc[:,3].values
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size =
0.2,random_state=0)
import statsmodels.formula.api as sm
model = sm.OLS(y_train,X_train[:,[0,1,2,3,4,6]])
result = model.fit()
print(result.summary())`
运行时出错:
y_pred = result.predict(X_test)
我的X_train 的形状是 - (297,7)
我的 X_test 的形状是 - (75,7)dtype 是 numpy.ndarray
以前有人问过这个问题。我关注了 stackoverflow.com 上的一些帖子,并尝试使用 reshape 函数解决它。但是,它对我没有帮助。谁能解释我为什么会收到这个错误?解决办法是什么?
【问题讨论】:
-
你是不是故意漏掉了[0,1,2,3,4,6]中的5?因为这使您对回归的输入为 6 维,而您通过的 X_test 有 7 维,因此
7(dim1)!+6(dim0) -
是的,我删除了第 5 个变量,因为它的 p 值大于 0.05。我希望模型有 6 个变量。但我的 X 测试应该包含所有 7 个变量。我该如何做到这一点?
-
然后试试
y_pred = result.predict(X_test[:,[0,1,2,3,4,6]]) -
感谢@D_Serg ..解决了我的问题!!请将其写为答案,以便我将其标记为“已接受的解决方案”并关闭问题。
标签: python numpy regression statsmodels