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

如何在DataFrame多列中循环运行ARIMA模型并存储训练结果

ARIMA多列模型存储与Col9预测解决方案

核心问题修正

原代码循环中每次覆盖model变量,导致仅保留最后一列的模型,无法存储所有列的训练结果;同时训练测试划分逻辑不符合时间序列建模的时序要求,需调整。

修改后代码

# 训练测试划分:按时间顺序取前90行作为训练集,后续数据用于Col9验证,指定未来预测数量
train = df.iloc[:90, :]  # 前90行所有列作为训练数据
test_col9 = df.iloc[90:, -1]  # 第90行之后的Col9真实值,用于验证预测效果
n_future = 5  # 要预测的Col9未来值个数

order = (1, 2, 1)
# 用字典存储每一列训练完成的ARIMA模型,避免循环覆盖
column_models = {}

for col in train.columns:
    model = ARIMA(train[col], order=order)
    model.initialize_approximate_diffuse()
    fitted_model = model.fit()
    column_models[col] = fitted_model
    # 如需查看单列模型详细摘要,取消下方注释
    # print(f"=== {col} 模型摘要 ===")
    # print(fitted_model.summary())

# 提取Col9的训练模型
col9_model = column_models['Col9']

# 对测试集区间的Col9进行预测
test_preds = col9_model.predict(start=len(train), end=len(train)+len(test_col9)-1)

# 预测Col9的n_future个未来值
future_preds = col9_model.predict(start=len(df), end=len(df)+n_future-1)

# 输出结果
print("Col9测试集预测结果:")
print(test_preds)
print("\nCol9未来{}个值的预测结果:".format(n_future))
print(future_preds)

关键改动说明

  • 模型存储优化:使用字典column_models,以列名为键、训练好的模型为值,彻底解决循环中模型被覆盖的问题
  • 时序划分规范:严格按照时间顺序划分训练集,符合时间序列建模不能打乱时序的基本要求
  • 双预测逻辑实现:同时完成测试集验证预测与未来值预测,匹配项目需求
  • 扩展性保留:后续可通过column_models[列名]快速调用任意列的模型,进行后续分析或预测

内容的提问来源于stack exchange,提问作者A Newbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:01:00