如何使用Tensorflow的预测方法来预测时间序列的下一个值?

4
我想知道如何在模型训练后预测和获取未来的时间序列数据。我想要在N步之后获取这些值。我想知道时间序列数据是否已经被正确学习和预测。如何正确地做到这一点以获取以下(下一个)值?我想使用model.predict或类似方法来获取下一个值。
我有x_testx_test[-1] == t,所以下一个值的意思是t+1, t+2, .... t+n。在这个例子中,我想要获取t+1, t+2 ... t+n

第一步

我尝试使用股票指数数据

inputs = total_data[len(total_data) - forecast - look_back:]
inputs = scaler.transform(inputs)
X_test = []
for i in range(look_back, inputs.shape[0]):
    X_test.append(inputs[i - look_back:i])
X_test = np.array(X_test)
predicted = model.predict(X_test)

但结果如下

enter image description here

X_test[-20:]和接下来的20个预测结果看起来一样。我想知道这是否是正确的训练和预测方法,以及结果是否正确。

完整源代码

我尝试的第一种方法没有正确工作。

第二种方法

我意识到有些问题,所以我使用了Tensorflow教程中的时间序列来练习模型的训练。

a = y_val[-look_back:] 
for i in range(N-step prediction): #predict a new value n times.
    tmp = model.predict(a.reshape(-1, look_back, num_feature)) #predicted value     
    a = a[1:] #remove first     
    a = np.append(a, tmp) #insert predicted value

结果以线性回归形式预测,与实际数据非常不同。

2

输出一个与真实数据无关的线性回归异常值:

完整源代码 (在第25行之后是我的代码.)

我非常好奇如何使用Tensorflow预测方法预测时间序列的下一个值

我不想理论上是否有效,我只是想知道如何使用预测方法获取接下来的n步骤

感谢您阅读这篇长问题。我希望听取您的宝贵意见。


请查看 https://www.tensorflow.org/tutorials/structured_data/time_series#multi-step_model。 - asachet
我已经查看了TensorFlow教程,但不知道出了什么问题。 - user12483252
1个回答

0
"

"lstm"通常用于预测3D数据=>目标,其输入具有相同的时间帧数(n,t,f)。 “n”表示数据编号,“t”表示帧编号,“f”表示特征数量。

要预测的是1D数据=>目标,即(t,f) 当f = 0时,您只能使用F(t) => y 如果您可以估计函数F,则可以获得y。NN无法帮助这里。

"

我知道LSTM是如何工作的,但我想知道的是为什么结果异常?正如你非常清楚的,在我的完整源代码中,我使用了model.predict(-1,t,f)并且结果就像我所写的一样...。非常抱歉和难过,但你的回答非常模糊和难以理解...什么是“NN”? - user12483252

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接