我花了几个月阅读无数的帖子,我仍然感到困惑,就像我最初的那样。希望有人可以提供帮助。
问题:我想使用时间序列来预测特定位置的天气数据。
设置:
X1
和X2
都是包含10年指数的每日值的向量(每个向量中总共3650个值)。
Y
是纽瓦克机场的温度时间序列(T
),每天持续10年(3650天)。
有一个很好的例子,X1
和X2
可以用作Y
的预测变量。所以我将所有内容分解为100天的窗口并创建以下内容:
X1 = (3650,100,1)
X2 = (3650,100,1)
这样窗口1包含从t=0
到t=99
的值,窗口2包括从t=1
到t=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,]
),我不需要取回窗口或类似的东西。
非常感谢!
答案 0 :(得分:3)
您可以预测的唯一格式是您训练模型的格式。如果我理解正确,您按如下方式训练模型:
您使用了大小为100的窗口(即有时为T-99,T-98,...,T
的要素)来预测目标T
时的值。
如果情况确实如此,那么您可以对模型做的唯一事情就是使用相同类型的预测。也就是说,您可以提供100天的功能值,并要求模型预测100中最后一天的目标值。
如果您希望它能够预测N
天,则必须相应地训练您的模型。也就是说,Y
中的每个元素都应包含N
天的序列。 Here是一篇博文,介绍了如何做到这一点。