您可以在下面找到一个已解决的示例(在温度属性的单变量版本上),使用 statsmodels ARIMA,在尝试数小时后甚至无法完成执行。
关于性能问题,您可以选择使用另一个高效的库,如 Keras 和 Tensorflow 建模一个对时间序列数据有用的 LSTM,它能够处理如此多的样本而不会出现性能问题。
该数据集包含 420551 个样本,使用 ARIMA statsmodels 方法通过前向验证非常昂贵......您可以提取温度值以执行单变量时间序列预测。
请参阅下面的示例(基于本教程),暂时将超参数化放在一边,您可以训练近 50 万个时间序列样本而不会出现性能问题(您可以在 google colab 上免费试用以获得更快的检查)。从教程中的示例中,您应该特别注意:
def univariate_data(数据集,start_index,end_index,history_size,target_size):
data = []
labels = []
start_index = start_index + history_size
if end_index is None:
end_index = len(dataset) - target_size
for i in range(start_index, end_index):
indices = range(i-history_size, i)
#### Reshape data from (history_size,) to (history_size, 1)
data.append(np.reshape(dataset[indices], (history_size, 1)))
labels.append(dataset[i+target_size])
return np.array(data), np.array(labels)
其中,使用 20 个样本作为最近的历史来预测您可以使用的下一个值:
univariate_past_history = 20
univariate_future_target = 0
x_train_uni, y_train_uni = univariate_data(uni_data, 0, TRAIN_SPLIT,
univariate_past_history,
univariate_future_target)
x_val_uni, y_val_uni = univariate_data(uni_data, TRAIN_SPLIT, None,
univariate_past_history,
univariate_future_target)
有类似的东西:
通过简单地预测历史值的平均值与基线模型进行比较,您有:
- 基线模型仅基于过去值的平均值进行预测:
VS