赞
踩
数据类型:单列
-
- import numpy
- import matplotlib.pyplot as plt
- from keras.models import Sequential
- from keras.layers import Dense
- from keras.layers import LSTM
- from keras.models import Sequential, load_model
-
- dataset = df.values
- # 将整型变为float
- dataset = dataset.astype('float32')
-
- from sklearn.preprocessing import MinMaxScaler
- scaler = MinMaxScaler(feature_range=(0, 1))
- dataset = scaler.fit_transform(dataset)
- train_size = int(len(dataset) * 0.65)
- trainlist = dataset[:train_size]
- testlist = dataset[train_size:]
-
- def create_dataset(dataset, look_back):
- #这里的look_back与timestep相同
- dataX, dataY = [], []
- for i in range(len(dataset)-look_back-1):
- a = dataset[i:(i+look_back)]
- dataX.append(a)
- dataY.append(dataset[i + look_back])
- return numpy.array(dataX),numpy.array(dataY)
- #训练数据太少 look_back并不能过大
- look_back = 1
- trainX,trainY = create_dataset(trainlist,look_back)
- testX,testY = create_dataset(testlist,look_back)
- trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
- testX = numpy.reshape(testX, (testX.shape[0], testX.shape[1] ,1 ))
- # create and fit the LSTM network
- model = Sequential()
- model.add(LSTM(4, input_shape=(None,1)))
- model.add(Dense(1))
- model.compile(loss='mean_squared_error', optimizer='adam')
- model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
- # model.save(os.path.join("DATA","Test" + ".h5"))
- # make predictions
-
- #模型验证
- #model = load_model(os.path.join("DATA","Test" + ".h5"))
- trainPredict = model.predict(trainX)
- testPredict = model.predict(testX)
-
- #反归一化
- trainPredict = scaler.inverse_transform(trainPredict)
- trainY = scaler.inverse_transform(trainY)
- testPredict = scaler.inverse_transform(testPredict)
- testY = scaler.inverse_transform(testY)
- plt.plot(trainY)
- plt.plot(trainPredict[1:])
- plt.show()s
- plt.plot(testY)
- plt.plot(testPredict[1:])
- plt.show()
-
-

预测未来数据方法
.单维单步(使用前n(2,代码演示为3)步预测后一步)
- #对全部数据进行训练
- import numpy
- import matplotlib.pyplot as plt
- from keras.models import Sequential
- from keras.layers import Dense
- from keras.layers import LSTM
- from keras.models import Sequential, load_model
-
- dataset = df.values
- # 将整型变为float
- dataset = dataset.astype('float32')
- from sklearn.preprocessing import MinMaxScaler
- scaler = MinMaxScaler(feature_range=(0, 1))
- dataset = scaler.fit_transform(dataset)
- def create_dataset(dataset, look_back):
- #这里的look_back与timestep相同
- dataX, dataY = [], []
- for i in range(len(dataset)-look_back-1):
- a = dataset[i:(i+look_back)]
- dataX.append(a)
- dataY.append(dataset[i + look_back])
- return numpy.array(dataX),numpy.array(dataY)
- #训练数据太少 look_back并不能过大
- look_back = 1
- trainX,trainY = create_dataset(dataset,look_back)
- trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
- # create and fit the LSTM network
- model = Sequential()
- model.add(LSTM(2, input_shape=(None,1)))
- model.add(Dense(1))
- model.compile(loss='mse', optimizer='adam')
- model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
-
-
- ######################滚动预测########
- predict_xlist = []#添加预测x列表
- predict_y = []#添加预测y列表
- timesteps=1
- length=12
- predict_xlist.extend(dataset[dataset.shape[0]-timesteps:dataset.shape[0],0].tolist())#已经存在的最后timestep

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。