我有一个包含 1000 个用户的活动数据的数据集。由于一个用户的活动与另一个用户不同,我希望用户属性也发送到 LSTM RNN 模型,以便模型可以更好地了解每个用户的行为。 我的数据集片段如下:
https://i.stack.imgur.com/poL31.jpg
我尝试使用分类信息的独热编码和二进制编码,但该模型没有产生良好的结果。但是,将 LSTM RNN 模型应用于单个用户的数据(不包括用户变量(会产生良好的结果。
我的用于异常检测的 lstm 自动编码器模型的代码片段如下:
inputs = Input(shape = (timesteps, n_features))
L1 = LSTM(encoding_dim, activation='relu', return_sequences=True,
kernel_regularizer=regularizers.l2(0.00))(inputs)
L2 = LSTM(hidden_dim, activation='relu', return_sequences=False)(L1)
L3 = RepeatVector(timesteps)(L2)
L4 = LSTM(hidden_dim, activation='relu', return_sequences=True)(L3)
L5 = LSTM(encoding_dim, activation='relu', return_sequences=True)(L4)
output = TimeDistributed(Dense(n_features))(L5)
lstm_model = Model(inputs=inputs, outputs=output)
lstm_model.summary()
现在我尝试过,
n_features = 22;特征数 [ 1(使用独热编码分类(+ 21(数字(]
encoding_dim = 16
hidden_dim = 8
如何使用此模型更好地处理分类属性,即用户变量?
我正在分享我的代码train_y test_y是类别。
使用以下方法加载数据集: train_size = int(len(df( * (1 - test_split((
X_train = df['sequence'].values[:train_size]
y_train = np.array(df['target'].values[:train_size])
X_test = np.array(df['sequence'].values[train_size:])
y_test = np.array(df['target'].values[train_size:])
然后加载数据并使用以下命令对其进行训练: X_train、y_train、X_test、y_test = load_data((
model = create_model(len(X_train[0]))
print ('Fitting model...')
hist = model.fit(X_train, y_train, batch_size=64, nb_epoch=10, validation_split =
0.1, verbose = 1)
score, acc = model.evaluate(X_test, y_test, batch_size=1)
print('Test score:', score)