使用 LSTM 神经网络和 Keras 预测天气数据
Predicting weather data using LSTM neural nets with Keras
我花了几个月的时间阅读了无数的帖子,但我仍然和最初一样感到困惑。希望有人能帮忙。
问题:我想使用时间序列来预测特定位置的天气数据。
设置:
X1
和 X2
都是包含 10 年每日指数值的向量(每个向量中的总值 3650)。
Y
是纽瓦克机场 (T
) 的温度时间序列,10 年(3650 天)的每一天。
X1
和 X2
可以用作 Y
的预测因子,这是一个强有力的案例。所以我将所有内容分解为 100 天的 windows 并创建以下内容:
X1 = (3650,100,1)
X2 = (3650,100,1)
这样 window 1 包括从 t=0
到 t=99
的值,window 2 包括从 t=1
到 t=100
的值,等等(假设我最后有足够的额外数据,我们还有 3650 windows)。
我从其他教程中学到的是,要进入 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,]
),我不需要取回 windows 或类似的东西。
非常感谢!
您可以预测的唯一格式是您训练模型的格式。如果我没理解错的话,你是这样训练模型的:
您使用大小为 100 的 windows(即时间 T-99,T-98,...,T
的特征)来预测目标在时间 T
的值。
如果确实如此,那么你唯一能用模型做的就是同类型的预测。也就是说,你可以提供你的特征值100天,让模型预测这100天中最后一天的目标值。
如果您希望它能够预测 N
天,您必须相应地训练您的模型。也就是说,Y
中的每个元素都应该由 N
天的序列组成。 Here 是一个描述如何做到这一点的博客 post。
我花了几个月的时间阅读了无数的帖子,但我仍然和最初一样感到困惑。希望有人能帮忙。
问题:我想使用时间序列来预测特定位置的天气数据。
设置:
X1
和 X2
都是包含 10 年每日指数值的向量(每个向量中的总值 3650)。
Y
是纽瓦克机场 (T
) 的温度时间序列,10 年(3650 天)的每一天。
X1
和 X2
可以用作 Y
的预测因子,这是一个强有力的案例。所以我将所有内容分解为 100 天的 windows 并创建以下内容:
X1 = (3650,100,1)
X2 = (3650,100,1)
这样 window 1 包括从 t=0
到 t=99
的值,window 2 包括从 t=1
到 t=100
的值,等等(假设我最后有足够的额外数据,我们还有 3650 windows)。
我从其他教程中学到的是,要进入 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,]
),我不需要取回 windows 或类似的东西。
非常感谢!
您可以预测的唯一格式是您训练模型的格式。如果我没理解错的话,你是这样训练模型的:
您使用大小为 100 的 windows(即时间 T-99,T-98,...,T
的特征)来预测目标在时间 T
的值。
如果确实如此,那么你唯一能用模型做的就是同类型的预测。也就是说,你可以提供你的特征值100天,让模型预测这100天中最后一天的目标值。
如果您希望它能够预测 N
天,您必须相应地训练您的模型。也就是说,Y
中的每个元素都应该由 N
天的序列组成。 Here 是一个描述如何做到这一点的博客 post。