我有一个数据集,涵盖了数百个温度值。显然,在气象学中,根据过去预测未来的价值是有帮助的。
我有以下有状态的模型,内置在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中缺少一些简单的功能。
谢谢。
答案 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中的时间序列。