keras - 如何在 LSTM RNN 中传递分类信息和数值特征
问题描述
我有一个数据集,其中包含 1000 个用户的活动数据。由于一个用户的活动与另一个用户不同,我希望用户属性也发送到 LSTM RNN 模型,以便模型可以更好地了解每个用户的行为。我的数据集片段如下:
https://i.stack.imgur.com/poL31.jpg
我尝试了分类信息的 one-hot 编码和二进制编码,但模型没有产生好的结果。但是将 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(带有 one-hot 编码的分类)+ 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)
推荐阅读
- python - 为什么我在已知观察中使用 .loc 收到关键错误
- c# - 无法使用 Selenium Chrome RemoteWebDriver 连接到远程服务器
- javascript - 在循环中获取元素长度并获取属性
- selenium-webdriver - 在 HtmlUnit 中处理警报
- c# - 动态处理数据集表结果
- sql - 查找带有数字sql的单词,例如
- java - 使用 Beam SQL 查询 Avro Schema
- excel - 如何使用 VBA 代码查找、剪切、粘贴和擦除
- python - 带有字段和下拉菜单的简单 python 框架
- python - 如何测试访问外部服务的api?