【发布时间】:2019-10-12 01:11:04
【问题描述】:
我对数据科学和神经网络还很陌生。我有一个 unicode 句子数据集,它们被标记为 0 和 1 用于“垃圾邮件”或“非垃圾邮件”。我用于数据的模型是下面的代码(不包括数据预处理):
from keras.models import Model
from keras.layers import LSTM, Activation, Dense, Dropout, Input, Embedding
def RNN():
inputs = Input(name='inputs',shape=[max_len])
layer = Embedding(max_words,50,input_length=max_len)(inputs)
layer = LSTM(64)(layer)
layer = Dense(256,name='FC1')(layer)
layer = Activation('relu')(layer)
layer = Dropout(0.5)(layer)
layer = Dense(1,name='out_layer')(layer)
layer = Activation('sigmoid')(layer)
# sigmoid aka 0 to 1 output
model = Model(inputs=inputs,outputs=layer)
return model
model.compile(loss='binary_crossentropy',optimizer=RMSprop(),metrics=['accuracy'])
到目前为止,预测非常好。
但现在我修改了我的数据集。我添加了 6 列而不是“垃圾邮件”列,因此我的数据标签变为 [1-7] 之间的整数。数据集如下所示(案例 #1):
sentence | category
sent 1 | 1
sent 2 | 3
sent 3 | 2
sent 4 | 7
.
.
.
我知道我可以添加虚拟变量并像这样修改它(案例#2):
sentence | category_1 | category_2 | category_3 | ... | category_7
sent 1 | 1 | 0 | 0 | | 0
sent 2 | 0 | 0 | 1 | | 0
sent 3 | 0 | 1 | 0 | | 0
sent 4 | 0 | 0 | 0 | | 1
.
.
.
所以我熟悉数据集的特征工程部分。实际上我正在寻找的是修改代码以从模型中获得输出,例如 1,2,3,4,..(这意味着每个类别的预测)。
有谁知道我怎样才能以尽可能少的编辑来修改代码(keras 模型)?
任何其他提高准确性的建议(基于 NLP 和神经网络领域的经验)将不胜感激。
【问题讨论】:
标签: python keras classification