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

使用Statsmodels内置数据集时OLS模型出现“Shapes not aligned”错误

问题解决:Statsmodels OLS预测报错及建模建议

错误修正

你的报错源于调用了未完成拟合的OLS模型对象的predict方法,正确操作是使用拟合后的结果对象执行预测。

错误原因

model = sm.OLS(train_y, train_x)仅创建了OLS模型的框架,并未完成参数拟合;results = model.fit()才是执行拟合流程、返回包含拟合参数与预测方法的结果对象。直接调用model.predict()会触发矩阵维度不匹配的错误。

修正后的代码

将预测行替换为拟合结果对象的调用即可,完整代码如下:

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels import datasets
from sklearn.model_selection import train_test_split

data = datasets.anes96.load_pandas().data

train, test = train_test_split(data, test_size=0.2)

x_vars = ['age', 'educ', 'selfLR']
y_var = 'PID'

train_x = train[x_vars]
train_x = sm.add_constant(train_x)
train_y = train[y_var]

model = sm.OLS(train_y, train_x)
results = model.fit()
# 建议开启该行查看模型拟合统计摘要,评估模型质量
# print(results.summary())

test_x = test[x_vars]
test_x = sm.add_constant(test_x)

# 使用拟合后的results对象执行预测
predictions = results.predict(test_x)

建模与数据集使用建议

  • 模型拟合验证:拟合完成后务必查看results.summary(),通过系数p值(判断特征显著性)、R²(模型解释力)、F统计量(模型整体显著性)等指标,确认模型拟合质量。
  • 数据集预处理与认知:
    • 用data.info()检查变量类型、缺失值情况,data.describe()查看数值变量统计分布,提前处理缺失值或异常值;
    • 通过datasets.anes96.NOTE查看数据集官方说明,明确变量含义(比如PID代表党派认同,selfLR代表自我意识形态定位),帮助合理选择特征与解读结果。
  • 测试集性能评估:预测完成后,可结合测试集真实值评估模型泛化能力,例如计算均方误差:
    from sklearn.metrics import mean_squared_error
    mse = mean_squared_error(test[y_var], predictions)
    print(f"测试集均方误差: {mse:.2f}")
    
  • 特征一致性保障:确保训练集与测试集的特征处理逻辑完全一致,比如统一添加常数项、选择相同特征列,避免因特征维度或顺序不一致引发错误。

内容的提问来源于stack exchange,提问作者Sarah DeCelie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:11:08