最佳答案
对于网格搜索方法,您可以使用分为两部分的方法:
- 评估 ARIMA 模型。
- 将数据集分为训练集和测试集。
- 遍历测试数据集中的时间步。
- 训练 ARIMA 模型。
- 进行一步预测。
- 存储预测;获取并存储实际观察结果。
- 计算预测与预期值的误差分数
这是代码:
# evaluate an ARIMA model for a given order (p,d,q)
def evaluate_arima_model(X, arima_order):
# prepare training dataset
train_size = int(len(X) * 0.66)
train, test = X[0:train_size], X[train_size:]
history = [x for x in train]
# make predictions
predictions = list()
for t in range(len(test)):
model = ARIMA(history, order=arima_order)
model_fit = model.fit(disp=0)
yhat = model_fit.forecast()[0]
predictions.append(yhat)
history.append(test[t])
# calculate out of sample error
error = mean_squared_error(test, predictions)
return error
- 计算 ARIMA 参数集,代码如下:
# evaluate combinations of p, d and q values for an ARIMA model
def evaluate_models(dataset, p_values, d_values, q_values):
dataset = dataset.astype('float32')
best_score, best_cfg = float("inf"), None
for p in p_values:
for d in d_values:
for q in q_values:
order = (p,d,q)
try:
mse = evaluate_arima_model(dataset, order)
if mse < best_score:
best_score, best_cfg = mse, order
print('ARIMA%s MSE=%.3f' % (order,mse))
except:
continue
print('Best ARIMA%s MSE=%.3f' % (best_cfg, best_score))
有关更多详细信息,您可以在此链接中找到一个教程,其中开发了用于单步滚动预测的网格搜索 ARIMA 超参数,https://machinelearningmastery.com/grid-search-arima-hyperparameters-with-python/
关于python - 如何在 python 中查找 ARIMA 模型的参数 [p, d, q] 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53677152/