使用LSTM和keras进行时间序列预测的分类变量

Tit*_*llo 5 python categorical-data deep-learning lstm keras

我有一个LSTM模型(keras),它接收变量的过去20值作为输入,6并预测这些变量的未来43.换句话说,我有6个时间序列,我试图用它们过去的20个值来预测它们的未来值.基本代码是:

past_time_steps = 6
future_time_steps = 4
inputs = Input(shape=(20,past_time_steps))
m = LSTM(hid, return_sequences=True)(inputs)
m = Dropout(0.5)(m)
m = LSTM(hid)(m)
m = Dropout(0.5)(m)
outputA = Dense(future_time_steps, activation='linear', W_constraint=nonneg())(m)
outputB = Dense(future_time_steps, activation='linear', W_constraint=nonneg())(m)
outputC = Dense(future_time_steps, activation='linear', W_constraint=nonneg())(m)
m = Model(inputs=[inputs], outputs=[outputA, outputB, outputC])
m.compile(optimizer='adam', loss='mae')
m.fit(x,[y1,y2, y2])
Run Code Online (Sandbox Code Playgroud)

因此,输入是具有形状的numpy矩阵,(500,20,6)500表示样本的数量(例如,训练时间序列).

现在,我有了新的数据,所以对于每个时间序列,我都有一个分类变量(可以有6个值:) 0,1,2,3,4,5.如何将此信息添加到模型中?我可以添加另一个使用此变量的图层吗?我应该在时间序列的开头/结尾填充此变量,以便我有一个带形状的输入矩阵(500,21,6)吗?

小智 1

One_hot_encode 分类变量并以与其他时态数据相同的方式对其进行预处理。您的时间步长不受此新数据的影响。受影响的只是变量的数量。