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

时间:2017-08-23 18:28:22

标签: python machine-learning neural-network deep-learning keras

我花了几个月阅读无数的帖子,我仍然感到困惑,就像我最初的那样。希望有人可以提供帮助。

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

设置:

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

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

有一个很好的例子,X1X2可以用作Y的预测变量。所以我将所有内容分解为100天的窗口并创建以下内容:

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

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

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

通过合并X = (3650,100,2) = (#_of_windows,window_length,#_of_predictors)X1得到的

X2

然后我有了这段代码:

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,]),我不需要取回窗口或类似的东西。

非常感谢!

1 个答案:

答案 0 :(得分:3)

您可以预测的唯一格式是您训练模型的格式。如果我理解正确,您按如下方式训练模型:

您使用了大小为100的窗口(即有时为T-99,T-98,...,T的要素)来预测目标T时的值。

如果情况确实如此,那么您可以对模型做的唯一事情就是使用相同类型的预测。也就是说,您可以提供100天的功能值,并要求模型预测100中最后一天的目标值。

如果您希望它能够预测N天,则必须相应地训练您的模型。也就是说,Y中的每个元素都应包含N天的序列。 Here是一篇博文,介绍了如何做到这一点。