如何创建具有可变序列长度的时间序列训练数据集

数据挖掘 Python 时间序列 数据集 训练
2022-03-01 11:59:43

我有可变序列长度的时间序列数据。所以像:

date        value label
2020-01-01  2     0     # first input time series
2020-01-02  1     0     # first input time series
2020-01-03  1     0     # first input time series
2020-01-01  3     1     # second input time series
2020-01-03  1     1     # second input time series

[samples, time_steps, n_features]time_steps不一致时,如何创建形状的训练数据集(numpy数组) ?

附加信息:将要训练的模型LSTM能够处理可变输入长度。

1个回答

我通过以下方式解决了它:

  1. 零填充小于最长的所有时间序列
  2. 在馈入网络之前添加一个忽略所有零值的Masking()层。masking_value=0.

带有遮罩层的模型部分如下所示:

model = keras.Sequential()
model.add(layers.Masking(mask_value=0., input_shape=(None, 1)))
model.add(layers.LSTM(100))

附加信息:为具有两个单独输入的模型实现掩码层有点不方便Keras Functional API,因此我用 实现了模型的该部分Keras Sequential API并将其连接到使用功能 API 实现的模型的其余部分。