You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

statsmodels中相同形状样本出现shapes not aligned错误如何解决

错误触发原因
  • 调用对象错误:你错误使用未拟合的sm.OLS实例model调用predict方法,而非拟合后得到的results实例。model.predict的第一个入参要求传入拟合参数,你传入的测试集x_test被识别为参数输入,最终触发两个二维矩阵点乘的维度不匹配错误。
  • 预处理逻辑不一致:训练集X_train调用了sm.add_constant添加常数项,特征维度为5列,测试集x_test未做相同处理,特征维度仅为4列,即使调用对象正确也会报错。你代码中的形状对比语句实际输出为False,大概率是你未注意到输出结果。
解决方案

修改两处代码即可解决问题:

  1. 测试集和训练集保持相同预处理逻辑,添加常数项
  2. 使用拟合完成的results实例调用predict方法

修正后的代码如下:

train_df = df.loc[:50]
X_train = train_df[["Value", "Momentum", "Quality", "MinimumVolatility"]]
y_train = train_df["P1ExRe"]

X_train = sm.add_constant(X_train)

model = sm.OLS(y_train, X_train)
results = model.fit()
test_df = df.loc[51:100]
x_test = test_df[["Value", "Momentum", "Quality", "MinimumVolatility"]]
y_test = test_df["P1ExRe"]

# 测试集添加常数项,和训练集预处理逻辑对齐
x_test = sm.add_constant(x_test)
print(x_test.shape == X_train.shape)
# 使用拟合后的结果实例调用predict方法
predict_res = results.predict(x_test)

内容的提问来源于stack exchange,提问作者Dmitry Sazhnev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 06:18:03