在Python中,当你训练LSTM模型时,你可以在部分数据上训练模型。然后在推理时,您可以为其提供任何您喜欢的输入,例如不属于训练集的 10 个最近时间步长。它将产生输出。现在 ARIMA 可以以同样的方式运行吗?我们可以给它输入序列吗?或者它是否使用训练数据来预测下一步?
下面是我的代码:
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import torch
import sys
import math
# Read the dataset from CSV file
df = pd.read_csv('sm_data.csv', header=None)
# Take the first 102 rows as training data and the rest as test data
train_data = df.iloc[:102, :]
test_data = df.iloc[102:, :]
# Iterate over each trend
forecast_results = {}
for column in df.columns:
# Fit ARIMA model on training data
model = ARIMA(train_data[column], order=(10,1,0))
model_fit = model.fit()
# Forecast 36 months ahead
forecast = model_fit.forecast(steps=36)
# Store forecast results
forecast_results[column] = forecast
# Convert forecast results to DataFrame
forecast_df = pd.DataFrame(forecast_results)
# Save forecast results to CSV
forecast_df.to_csv('forecast_results.csv', index=False)
您可以使用
.apply()
将拟合参数应用于与原始数据无关的新数据。这将使用当前拟合参数创建一个新的 Results
对象,应用于假设与模型原始数据无关的新数据集。
新的
Results
对象可用于预测:
fitted_model = ARIMA(train_data).fit()
#Get a new Results object by applying model to new data
new_results = fitted_model.apply(test_data)
#Use new_results for forecasting
forecast = new_results.forecast(1)
docs中有更多详细信息。