Python-将LSTM应用于具有不同时间戳的数据集

时间:2018-12-29 15:44:07

标签: python lstm

我要实现的目标

我正在研究两个数据集。数据集1显示了不同月份的天然气期货,从最近的月份开始直到100行,数据集2是天然气存储数据,每周更新一次。我在下面包括了这两个数据集。

数据集#2 enter image description here

数据集#1 enter image description here

数据集1中的价格,例如NGLast,NGOpen,NGHigh每10分钟波动一次,同时继续进行活跃的交易。但是,每周发布的数据集2中的数据表明天然气的储存量,数据集1中的价格会根据所报告的存储量而波动。

代码

 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
 from keras.layers import Dense
 from keras.models import Sequential
 from keras.layers import LSTM
 import datetime
 from keras import metrics
 from sklearn.preprocessing import MinMaxScaler

 data = pd.read_excel("C:\Futures\Futures.xls")

 data['Contract'] = pd.to_datetime(data['Contract'],unit='s').dt.date
 data['NG Last'] = data['NG Last'].str.rstrip('s')
 data['CO Last'] = data['CO Last'].str.rstrip('s')

 L=len(data)

 COHigh =  np.array([data.iloc[:,8]])
 COLow  =  np.array([data.iloc[:,9]])
 NGLast =  np.array([data.iloc[:,1]])
 NGOpen =  np.array([data.iloc[:,2]])
 NGLow  =  np.array([data.iloc[:,4]])
 COOpen =  np.array([data.iloc[:,7]])
 NGHigh =  np.array([data.iloc[:,3]])
 COLast =  np.array([data.iloc[:,10]])
 NGP     = np.array([data.iloc[:,5]])
 NGVolumes = np.array([data.iloc[:,6]])
 COVolumes = np.array([data.iloc[:,12]])
 COP       = np.array([data.iloc[:,11]])


 X = np.concatenate([COHigh,COLow, NGLast,NGOpen,COOpen,COLast,  NGHigh,NGVolumes,COVolumes, COP,NGP], axis =0)
 X = np.transpose(X)

 Y = NGLow
 Y = np.transpose(Y)


 scaler = MinMaxScaler()

 scaler.fit(X)
 X = scaler.transform(X)
 scaler.fit(Y)
 Y = scaler.transform(Y)

 X = np.reshape(X,(X.shape[0],1,X.shape[1]))
 print(X.shape)

 model = Sequential()
 model.add(LSTM(100,activation='tanh',input_shape=(1,11),   recurrent_activation='hard_sigmoid'))
 model.add(Dense(1))

 model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics = ['accuracy'])
 model.fit(X,Y,epochs = 100,batch_size=1,verbose=2)

 Predict = model.predict(X,verbose=1)

 inversed = scaler.inverse_transform(Predict)
 loss, accuracy = model.evaluate(X, Y, verbose=2)

到目前为止已经做了什么

上面的代码根据来自数据集#1的10个输入参数来预测“ NG低”数据及其准确性。 但是,我没有遵循如何包含来自数据集#2的参数,该数据集具有每周发布的数据。 数据集1每10分钟更新一次 数据集#2每周更新一次。

我需要包括哪些其他信息。

我还打算引入每周天气数据,只是为了使我的模型更可靠。

0 个答案:

没有答案