使用 LSTM 神经网络和 Keras 预测天气数据

Predicting weather data using LSTM neural nets with Keras

我花了几个月的时间阅读了无数的帖子,但我仍然和最初一样感到困惑。希望有人能帮忙。

问题:我想使用时间序列来预测特定位置的天气数据。

设置:

X1X2 都是包含 10 年每日指数值的向量(每个向量中的总值 3650)。

Y 是纽瓦克机场 (T) 的温度时间序列,10 年(3650 天)的每一天。

X1X2 可以用作 Y 的预测因子,这是一个强有力的案例。所以我将所有内容分解为 100 天的 windows 并创建以下内容:

X1 = (3650,100,1)
X2 = (3650,100,1)

这样 window 1 包括从 t=0t=99 的值,window 2 包括从 t=1t=100 的值,等等(假设我最后有足够的额外数据,我们还有 3650 windows)。

我从其他教程中学到的是,要进入 Keras,我会这样做:

X = (3650,100,2) = (#_of_windows,window_length,#_of_predictors) 我通过合并 X1X2.

得到

然后我有这个代码:

model = Sequential()
model.add(LSTM(1,return_sequences=True,input_shape=(100,2)))

model.add(LSTM(4))
model.add(Dropout(0.2))

model.compile(loss='mean_square_error',optimizer='rmsprop',shuffle=True)
model.fit(X,Y,batch_size=128,epochs=2) # Y is shape (3650,)

predictions = model.predict(?????????????)

所以我的问题是,如何设置 model.predict 区域以获取对未来 N 天数的预测?有时我可能需要 2 天,有时我可能需要 2 周。我只需要取回 N 值(形状:[N,]),我不需要取回 windows 或类似的东西。

非常感谢!

您可以预测的唯一格式是您训练模型的格式。如果我没理解错的话,你是这样训练模型的:

您使用大小为 100 的 windows(即时间 T-99,T-98,...,T 的特征)来预测目标在时间 T 的值。

如果确实如此,那么你唯一能用模型做的就是同类型的预测。也就是说,你可以提供你的特征值100天,让模型预测这100天中最后一天的目标值。

如果您希望它能够预测 N 天,您必须相应地训练您的模型。也就是说,Y 中的每个元素都应该由 N 天的序列组成。 Here 是一个描述如何做到这一点的博客 post。