使用 LSTM 进行多变量时间序列预测

数据挖掘 Python 喀拉斯 时间序列 lstm
2022-01-30 14:33:05

我有一个每小时测量污染('Sample_Measurement)和天气状况的数据集。如果我想使用前 n 小时的天气和污染数据来预测当前小时的污染水平,我没有问题。实际上,假设 n = 24,特征数为 5。3D 向量将具有以下形状(元素数,24,5)。 在此处输入图像描述

直到这一点我没有问题,但我想做的是也使用当前小时的天气状况(连同前一个 n = 24 小时),因为在前一个情况下,我只使用前一个 n 的数据小时。问题是我不知道该怎么做,因为 3D 向量的第三维是 5(4 个天气特征加上 1 个表示污染水平),所以我不能简单地添加当前小时天气特征,因为feature(4) 与 5 不同(因为对于当前时间,我们没有我们想要预测的当前污染)。我希望我已经清楚了,但这并不容易解释。

1个回答

您可以尝试执行以下操作(前面的伪代码):

input_past_24 = Input(shape=(24,5))
input_today = Input(shape(1,4))
output_from_LSTM = LSTM(some_args, ...)(input_past_24) # this has some size of your choice, let's say N
# if you want to add other layers, you'd do it here.
prediction = Dense(some_args, ...)(concatenate(input_today,output_from_LSTM))
model = Model(inputs=[input_past_24,input_today], output=prediction)
model.compile(some_args)
model.fit([data_from_past_days,data_today],expected_pollution, some_other_args...)

上面,关键点是将LSTM层的输出与当天的输入连接起来,然后将其发送到最后Dense一层进行最终预测。

有关更多详细信息,您可能需要查看 Keras的功能 API 指南