当前位置:   article > 正文

常用的LSTM时间序列预测(单变量时间序列预测 | 多变量时间序列预测 | 他们的预测未来数据方法)_[i:(i + look_back),:]

[i:(i + look_back),:]

单变量时间序列预测

数据类型:单列

  1. import numpy
  2. import matplotlib.pyplot as plt
  3. from keras.models import Sequential
  4. from keras.layers import Dense
  5. from keras.layers import LSTM
  6. from keras.models import Sequential, load_model
  7. dataset = df.values
  8. # 将整型变为float
  9. dataset = dataset.astype('float32')
  10. from sklearn.preprocessing import MinMaxScaler
  11. scaler = MinMaxScaler(feature_range=(0, 1))
  12. dataset = scaler.fit_transform(dataset)
  13. train_size = int(len(dataset) * 0.65)
  14. trainlist = dataset[:train_size]
  15. testlist = dataset[train_size:]
  16. def create_dataset(dataset, look_back):
  17. #这里的look_back与timestep相同
  18. dataX, dataY = [], []
  19. for i in range(len(dataset)-look_back-1):
  20. a = dataset[i:(i+look_back)]
  21. dataX.append(a)
  22. dataY.append(dataset[i + look_back])
  23. return numpy.array(dataX),numpy.array(dataY)
  24. #训练数据太少 look_back并不能过大
  25. look_back = 1
  26. trainX,trainY = create_dataset(trainlist,look_back)
  27. testX,testY = create_dataset(testlist,look_back)
  28. trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
  29. testX = numpy.reshape(testX, (testX.shape[0], testX.shape[1] ,1 ))
  30. # create and fit the LSTM network
  31. model = Sequential()
  32. model.add(LSTM(4, input_shape=(None,1)))
  33. model.add(Dense(1))
  34. model.compile(loss='mean_squared_error', optimizer='adam')
  35. model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
  36. # model.save(os.path.join("DATA","Test" + ".h5"))
  37. # make predictions
  38. #模型验证
  39. #model = load_model(os.path.join("DATA","Test" + ".h5"))
  40. trainPredict = model.predict(trainX)
  41. testPredict = model.predict(testX)
  42. #反归一化
  43. trainPredict = scaler.inverse_transform(trainPredict)
  44. trainY = scaler.inverse_transform(trainY)
  45. testPredict = scaler.inverse_transform(testPredict)
  46. testY = scaler.inverse_transform(testY)
  47. plt.plot(trainY)
  48. plt.plot(trainPredict[1:])
  49. plt.show()s
  50. plt.plot(testY)
  51. plt.plot(testPredict[1:])
  52. plt.show()

 

预测未来数据方法

.单维单步(使用前n(2,代码演示为3)步预测后一步)

 

  1. #对全部数据进行训练
  2. import numpy
  3. import matplotlib.pyplot as plt
  4. from keras.models import Sequential
  5. from keras.layers import Dense
  6. from keras.layers import LSTM
  7. from keras.models import Sequential, load_model
  8. dataset = df.values
  9. # 将整型变为float
  10. dataset = dataset.astype('float32')
  11. from sklearn.preprocessing import MinMaxScaler
  12. scaler = MinMaxScaler(feature_range=(0, 1))
  13. dataset = scaler.fit_transform(dataset)
  14. def create_dataset(dataset, look_back):
  15. #这里的look_back与timestep相同
  16. dataX, dataY = [], []
  17. for i in range(len(dataset)-look_back-1):
  18. a = dataset[i:(i+look_back)]
  19. dataX.append(a)
  20. dataY.append(dataset[i + look_back])
  21. return numpy.array(dataX),numpy.array(dataY)
  22. #训练数据太少 look_back并不能过大
  23. look_back = 1
  24. trainX,trainY = create_dataset(dataset,look_back)
  25. trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
  26. # create and fit the LSTM network
  27. model = Sequential()
  28. model.add(LSTM(2, input_shape=(None,1)))
  29. model.add(Dense(1))
  30. model.compile(loss='mse', optimizer='adam')
  31. model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
  32. ######################滚动预测########
  33. predict_xlist = []#添加预测x列表
  34. predict_y = []#添加预测y列表
  35. timesteps=1
  36. length=12
  37. predict_xlist.extend(dataset[dataset.shape[0]-timesteps:dataset.shape[0],0].tolist())#已经存在的最后timestep
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/112514
推荐阅读
相关标签
  

闽ICP备14008679号