【发布时间】:2018-04-16 15:27:35
【问题描述】:
我一直在尝试使用 LSTM Keras 根据时间序列数据预测订单数量。
我将样本数据划分为训练集包含 282 条记录,而测试集包含 82 条记录。我正在使用 30 的回溯窗口 来预测测试数据的预测。
但由于某种原因,预测数据集仅包含 40 条记录,而测试数据中的预期为 71 条记录。背后的原因是什么?是导致问题的查找窗口吗?我觉得回溯窗口导致了这个问题。但是我该如何纠正呢?
保持如此高的回溯窗口很重要
def create_LSTM(trainX,testX,trainY,testY,look_back):
model = Sequential()
model.add(LSTM(6, input_shape=(1, look_back),activation= 'relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='RMSProp')
model.fit(trainX, trainY, epochs=300, batch_size=4, verbose=1)
trainpredict = model.predict(trainX,batch_size=4)
testpredict = model.predict(testX,batch_size=4)
testpredict = np.array(testpredict).reshape(len(testpredict),1)
print(testpredict)
print(len(testpredict))
return trainpredict,testpredict
我正在使用以下函数为导致实际问题的 LSTM 创建数据。我该如何纠正它?
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
#for i in range(len(dataset)-look_back):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
return np.array(dataX), np.array(dataY)
【问题讨论】:
-
trainX和testX是什么形状?乍一看,您的input_shape似乎是错误的。第一个维度表示序列长度(在您的情况下为look_back),以下维度表示实际数据形状。 -
实际上我用来为 LSTM 创建数据的函数实际上导致了问题
标签: python keras time-series lstm