用Keras中的RNN预测数据集的过去结束

时间:2017-08-07 21:28:37

标签: python machine-learning time-series keras recurrent-neural-network

我有一个数据集,涵盖了数百个温度值。显然,在气象学中,根据过去预测未来的价值是有帮助的。

我有以下有状态的模型,内置在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个点在数据集之外,并且它们尚未发生"。

我会感激任何有帮助的事情;我觉得我在Keras中缺少一些简单的功能。

谢谢。

1 个答案:

答案 0 :(得分:2)

  

我觉得我在Keras中缺少一些简单的功能。

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

假设您的时间序列trainX的{​​{1}}事件的x范围为[0,100]

然后预测您要在值predict()101上调用120的后续20个事件,例如:

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

同样,这取决于您的"接下来的20"事件看。如果您的bin大小为0.1(100,100.1,100.2,...),则应相应地评估预测。

如果您有兴趣,也可以查看他们提供示例的this页面,并详细了解使用RNN的Keras中的时间序列。