为了账号安全,请及时绑定邮箱和手机立即绑定

OLS回归python中的形状未对齐错误

OLS回归python中的形状未对齐错误

哆啦的时光机 2021-09-11 20:41:26
我有一个dataframe我试图运行statsmodel.apiOLS 回归的地方。它正在打印摘要。但是当我使用该predict()功能时,它给了我一个错误 -形状 (75,7) 和 (6,) 未对齐:7 (dim 1) != 6 (dim 0)我的代码是:X = newdf.loc[:, newdf.columns != 'V-9'].valuesy = newdf.iloc[:,3].valuesfrom sklearn.model_selection import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2,random_state=0)import statsmodels.formula.api as smmodel = 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函数来解决它。然而,它没有帮助我。谁能解释为什么我收到这个错误?解决办法是什么?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

modelin line model = sm.OLS(y_train,X_train[:,[0,1,2,3,4,6]]),当以这种方式训练时,假设输入数据是 6 维的,因为 的第 5 列X_train被删除。这要求测试数据(在本例中X_test)也是 6 维的。这就是为什么y_pred = result.predict(X_test)不起作用,因为X_test最初是 7 维的。这里的正确修复是:

y_pred = result.predict(X_test[:, [0,1,2,3,4,6]]

奖金

我看到您正在使用 Pandas 库。删除列的更好做法是使用.dropso 而不是

newdf.loc[:, newdf.columns != 'V-9'].values

您可以使用

newdf.drop('V-9', axis=1) # axis=1 makes sure cols are dropped, not rows

同样代替

X_train[:,[0,1,2,3,4,6]]

您可以使用

X_train.drop(X_train.columns[5], axis=1) # this like dropping the 5th column of the dataFrame

这使得它更具可读性和更容易编码,尤其是当您有 50 个维度而不是 7 个维度时。

我很高兴它有帮助!


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号