当前位置:   article > 正文

lstm预测未来的多个值,多步预测_lstm预测下n个数据

lstm预测下n个数据

        一般来说单步预测的精度是最高的,但是这样会导致预测未来的时长太短,即为超短期预测,但是实际中,需要预测未来的很多的步长。

        假设我们的模型的单步预测模型,如果需要预测未来很多步的话,就需要先预测未来的一个值,然后重新组合成滑动窗口序列再去预测,我写了一段代码实现了这个功能。

代码函数如下:

  1. def for_predict(data,model,pre_lengths,dim):
  2. """
  3. data:第一个给定的数据
  4. model:单步预测回归模型LSTM等
  5. pre_lengths:预测未来的步数
  6. dim:none,timesteps,dim中的dim维
  7. return: a ndarray that has pre_lengths elements
  8. """
  9. result=[]
  10. init_sequence=data
  11. try:
  12. if data.shape == None or len(init_sequence.shape) !=3:
  13. raise TypeError('数据类型错误,必须为(none,timesteps,dim)')
  14. except TypeError as e:
  15. print('数据类型错误,必须为(none,timesteps,dim)')
  16. if dim == 1:
  17. for i in range(pre_lengths):
  18. pred=model(init_sequence).numpy()[0][0]
  19. init_sequence=init_sequence[0][1:]
  20. init_sequence=np.append(init_sequence,pred)
  21. init_sequence=init_sequence.reshape(1,look_back,dim)
  22. result.append(pred)
  23. return np.array(result).reshape(-1,1)
  24. if dim !=1:
  25. for i in range(pre_lengths):
  26. pred=model(init_sequence).numpy()[0][:]
  27. init_sequence=init_sequence[0][1:]
  28. init_sequence=np.append(init_sequence,pred)
  29. init_sequence=init_sequence.reshape(1,look_back,dim)
  30. result.append(pred)
  31. return np.array(result)

使用方法如下:

  1. #循环预测
  2. dim=1
  3. pre_lengths=30
  4. init_sequence=m_trx[600].reshape(1,look_back,dim)
  5. result=for_predict(init_sequence,model,pre_lengths,dim)
  6. results=sc.inverse_transform(result)[:,0]
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/569291
推荐阅读
相关标签
  

闽ICP备14008679号