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

Python中ARIMA模型能否接收自定义输入序列?

问题

在Python中训练LSTM模型时,可使用部分数据完成训练,在推理阶段可输入训练集以外的任意序列(例如最近10个时间步长)以生成输出。请问ARIMA模型是否可以按此方式运行?能否为其输入自定义序列,还是仅能基于训练数据预测后续步长?

现有代码
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import torch
import sys
import math

# 读取CSV数据集
df = pd.read_csv('sm_data.csv', header=None)

# 取前102行作为训练数据,剩余作为测试数据
train_data = df.iloc[:102, :]
test_data = df.iloc[102:, :]

# 遍历每个序列
forecast_results = {}
for column in df.columns:
    # 在训练数据上拟合ARIMA模型
    model = ARIMA(train_data[column], order=(10,1,0))
    model_fit = model.fit()

    # 预测未来36个月
    forecast = model_fit.forecast(steps=36)

    # 存储预测结果
    forecast_results[column] = forecast

# 将预测结果转为DataFrame
forecast_df = pd.DataFrame(forecast_results)

# 保存预测结果到CSV
forecast_df.to_csv('forecast_results.csv', index=False)
解答

ARIMA可以实现类似LSTM的“自定义序列输入预测”,但逻辑和LSTM有差异:

  • LSTM是直接将输入序列作为模型的输入张量生成预测;而ARIMA基于自回归的时序依赖逻辑,它需要依赖完整的时序上下文来计算条件概率,无法直接喂入一段孤立的自定义序列就输出预测。
  • 你可以通过两种方式实现需求:
    1. 基于自定义序列重新拟合模型:如果你的自定义序列是独立的时序片段,直接用这段序列作为训练数据拟合ARIMA,再预测后续步长。
    2. 增量更新模型历史:如果自定义序列是原训练数据之后的新观测值,用update方法将新序列追加到模型的历史数据中,无需重新拟合整个训练集,再基于更新后的上下文预测。

代码示例

1. 基于独立自定义序列预测

# 假设custom_seq是pd.Series格式的自定义序列
custom_model = ARIMA(custom_seq, order=(10,1,0))
custom_model_fit = custom_model.fit()
# 预测后续5步
custom_forecast = custom_model_fit.forecast(steps=5)

2. 增量更新原模型后预测

# 基于已训练好的model_fit,增量更新自定义序列
updated_model_fit = model_fit.update(custom_seq)
# 预测后续5步
updated_forecast = updated_model_fit.forecast(steps=5)

内容的提问来源于stack exchange,提问作者Travelling Salesman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:52:39