事件数据的lstm时间序列预测

时间:2017-05-04 22:45:51

标签: tensorflow deep-learning keras lstm keras-layer

我正在尝试解决时间序列问题。数据集有n个系统,我们记录每个系统发生的故障数量大约t天。然后,我的目标是预测在t + 1天内任何给定系统上可能发生的数字故障。 玩具数据集看起来像这样。在此,每行表示一个系统连续11天的故障数。

        x = [[0,1,2,20,24,8,2,2,1,2,1],
             [0,100,200,250,300,80,25,20,10,1,1],
             [1,25,30,35,10,0,0,1,1,0,1],
             [0,10,10,2,24,8,2,2,1,2,1],
             [0,4,20,20,24,80,10,20,30,90,150]]

然后我的训练数据排除了每一行的最后一天。

         x_train = [[0,1,2,20,24,8,2,2,1,2],
             [0,100,200,250,300,80,25,20,10,1],
             [1,25,30,35,10,0,0,1,1,0],
             [0,10,10,2,24,8,2,2,1,2],
             [0,4,20,20,24,80,10,20,30,90]]

如何修改数据以使用LSTM。任何示例代码都非常感谢。所有现有代码都模拟单个实体,就像我的情况一样 我有n个不同的系统。这是我的简单尝试。请提供反馈是否符合我的要求。我的数据如下所示。

|    | t1 | t2 | t3 |
|----|----|----|----|
| x1 | 1  | 2  | 3  |   
| x2 | 3  | 4  | 5  |   
| x3 | 5  | 6  | 7  | 
x = np.array([[1,2],[3,4],[5,6]])
y = np.array([[2,3],[4,5],[6,7]])
x = np.reshape(x,(3,1,2))
y = np.reshape(y,(3,2))
test_x  = np.array([[6,7]])
test_x = np.reshape(test_x,(1,1,2))

model = Sequential()  
model.add(LSTM(4,batch_input_shape=(1,1,2), return_sequences=False))
model.add(Dense(2,activation='relu'))
model.compile(loss='mean_absolute_error', optimizer='adam')
model.fit(x, y,nb_epoch= 100, batch_size=1)
model.reset_states()
model.predict(test_x)

由于

1 个答案:

答案 0 :(得分:0)

如果您需要模型来预测t + 1,您只需将数据1位置向右移动即可生成标签。 如果您有数据:[1,2,3,4,5,6,7],并且seq_len为3,那么您的输入数据批量为[[1,2,3], [4,5,6]],您的目标数据批次将为[[2,3,4],[5,6,7]],代码可能如下所示:

inputs = np.array(int_text[: n_batches * batch_size * seq_length])
outputs = np.array(int_text[1: n_batches * batch_size * seq_length + 1])

x = np.split(inputs.reshape(batch_size, -1), n_batches, 1)
y = np.split(outputs.reshape(batch_size, -1), n_batches, 1)

编辑:

[[1,2,3], [4,5,6]]是输入批次。 batch_size为2,seq_length为3。

[[2,3,4],[5,6,7]]是目标批次。 batch_size为2,seq_length为3。

无论您使用哪种方法,您只需要制作上述数据。

相关问题