Keras预测下一个时间序列项

时间:2018-08-02 02:03:21

标签: python machine-learning keras deep-learning lstm

我有几个问题,但是从我的数据集开始吧

我的数据集由序列组成,序列中的每个时间步都有4个特征。像这样

S0:
t0 -> f1, f2, f3, f4
t1 -> f1, f2, f3, f4
t2 -> f1, f2, f3, f4
t3 -> f1, f2, f3, f4

S1:
t0 -> f1, f2, f3, f4
t1 -> f1, f2, f3, f4
t2 -> f1, f2, f3, f4
t3 -> f1, f2, f3, f4
t4 -> f1, f2, f3, f4
t5 -> f1, f2, f3, f4
t6 -> f1, f2, f3, f4
t7 -> f1, f2, f3, f4

etc...

如您所见,每个序列的长度都是可变的,并且变异性很大(从10-500不等)

我的目标是输入t0并使用每个预测来辅助下一个预测,直到达到目标为止。

i0 -> [t0] - predicts > t1
i1 -> [t0, t1] - predicts > t2
i2 -> [t0, t1, t2] - predicts > t3

and so on

我不确定如何在Keras中训练数据。我的“ x”目前有以下内容

[ [[f1, f2, f3, f4], [f1, f2, f3, f4]] , [[f1, f2, f3, f4]] ] ... 

问题:

  1. 如何在Keras中处理可变长度序列?
  2. 如何格式化“ y”个预期输出数据?

编辑 3.有点离题,但是否可以有一个开始时间步长和一个结束时间步长,然后在两者之间填写时间步长?

1 个答案:

答案 0 :(得分:0)

  

如何在Keras中处理可变长度序列?

好喀拉拉邦有很好的方法来处理可变长度的序列。例如,如果您将LSTM层用于序列预测,则可以将None设置为输入形状的时间维度

model.add(LSTM(num_units,input_shape=(None, data_dim));
  

如何格式化“ y”个预期输出数据?

您的y可以看作是x向左移动一个单位。

例如

# if
x = [t0,t1,t2,t3,t4]
#then 
y = [t1,t2,t3,t4]

如果xy都是numpy数组,则可以从y中获取x,如下所示。

y = x[1:]

由于x的最后一个值将不会用于预测,因此应将其删除。

x = x[:-1]