如何在 keras 中使用 LSTM 训练多变量到多类序列?
我有 50000 个序列,每个序列的长度为 100 个时间点。在每个时间点,我都有 3 个特征(所以宽度是 3)。
我有 4 个类,我想构建一个分类器来确定序列的类。最好的方法是什么?
我看到了许多单变量序列分类指南,但没有看到多变量指南,我不知道如何将其应用于多变量案例
如何在 keras 中使用 LSTM 训练多变量到多类序列?
我有 50000 个序列,每个序列的长度为 100 个时间点。在每个时间点,我都有 3 个特征(所以宽度是 3)。
我有 4 个类,我想构建一个分类器来确定序列的类。最好的方法是什么?
我看到了许多单变量序列分类指南,但没有看到多变量指南,我不知道如何将其应用于多变量案例
由于您使用LSTM使用 多元时间序列数据进行分类,因此您需要将时间序列数据建模为监督学习问题,并通过指定时滞计数来指定您需要查看的先前时间步长
您需要查看to_supervised函数并指定模型具有的输出数量。在你的情况下,它是 4。
从整个数据集中拆分您的训练集和测试集。70:30 的火车比例,测试将是一个好的开始。
另外,请注意,您需要使用该
sklearn.preprocessing.MinMaxScaler()函数缩放您的值。
您需要将您的训练和测试值重塑为 (batch_size/sample_size, time_steps, feature_size),因为 Keras 中的 LSTM 层希望您的数据以 3D 数组格式提供。
例如:您的训练形状将是train.shape = (batch_size, 100, 3)
对于 Keras 的模型构建
model = Sequential()
model.add(LSTM(number_of_hidden_units, activation='relu', input_shape=(n_timesteps = 100, n_features = 3)))
model.add(Dense(4, activation='softmax')) #since number of output classes is 4
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
model.fit(X_train, y_train, validation_data=(X_test, y_test), no_of_epochs, batch_size)
请注意,我刚刚给出了模型构建的粗略轮廓,并在您方便时省略了超参数。您可以将更多 LSTM 层堆叠到模型上,也可以调整模型中 hidden_layers 的数量,请参阅多类分类以获取更多详细信息。