在 Keras 中使用 RNN 预测数据集的过去结尾

Predicting Past End of Dataset with RNN in Keras

我有一个包含数百个温度值的数据集。显然,在气象学中,预测基于过去的未来值是有帮助的。

我有以下内置于 Keras 的有状态模型:

look_back = 1
model.add(LSTM(32, batch_input_shape=(batch_size, look_back, 1), stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
for i in range(10):
    model.fit(trainX, trainY, epochs=4, batch_size=batch_size, verbose=2, shuffle=False)
    model.reset_states()
# make predictions
trainPredict = model.predict(trainX, batch_size=batch_size)

我已经成功地能够在我的数据集上训练和测试模型以获得合理的结果,但是我很难理解预测数据集中的下一个点(比如 20 个点)需要什么。很明显,这20个点在数据集之外,还没有"occur"。

如果有任何帮助,我将不胜感激;我觉得我在 Keras 中缺少一些简单的功能。

谢谢。

I feel like I am missing some simple functionality in Keras.

这里有你需要的一切。要获得对新数据的预测,您必须再次使用 model.predict(),但在 所需范围 上。这取决于您的数据的外观。

让我们假设您的时间序列 trainXx 范围从 [0,100] 的事件。

然后根据值 101120 预测接下来要调用 predict() 的 20 个事件,例如:

futureData = np.array(range(101,121)) #[101,102,...,120]
futurePred = model.predict(futureData)

同样,这取决于您的 "next 20" 事件的外观。如果您的 bin 大小改为 0.1(100、100.1、100.2,...),您应该相应地评估预测。

您可能还想查看 this 页面,如果您有兴趣,他们会在其中提供示例并详细解释 Keras 中使用 RNN 的时间序列。