如何使用keras实现多标签分类神经网络

如何使用keras实现多标签分类神经网络,keras,neural-network,multilabel-classification,Keras,Neural Network,Multilabel Classification,我正试图用Keras实现一个神经网络,这个问题涉及到多标签分类。我知道解决这个问题的一种方法是将它转换为几个二进制分类问题。我已经实现了其中的一个,但不确定如何处理其他的,主要是如何组合它们?我的数据集有5个输入变量和5个标签。通常,单个数据样本会有1-2个标签。很少有两个以上的标签 以下是我的代码(感谢machinelearningmastery.com): 您所指的方法是或多标签分类策略。然而,当使用神经网络时,对于具有5个标签的多标签分类问题,最简单的解决方案是使用具有5个输出节点的单个模

我正试图用Keras实现一个神经网络,这个问题涉及到多标签分类。我知道解决这个问题的一种方法是将它转换为几个二进制分类问题。我已经实现了其中的一个,但不确定如何处理其他的,主要是如何组合它们?我的数据集有5个输入变量和5个标签。通常,单个数据样本会有1-2个标签。很少有两个以上的标签

以下是我的代码(感谢machinelearningmastery.com):


您所指的方法是或多标签分类策略。然而,当使用神经网络时,对于具有5个标签的多标签分类问题,最简单的解决方案是使用具有5个输出节点的单个模型。对于keras:

model = Sequential()
model.add(Dense(5, input_dim=5, kernel_initializer='normal', activation='relu'))
model.add(Dense(5, kernel_initializer='normal', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd')

可以将训练标签作为长度为5的二进制编码向量提供。例如,对应于类2和类3的示例将具有标签
[0 1 1 0 0]

,非常感谢您的快速回答,非常感谢。我得到了83.17%的准确率(只要使用kFold进行估算仍然合适)。
model = Sequential()
model.add(Dense(5, input_dim=5, kernel_initializer='normal', activation='relu'))
model.add(Dense(5, kernel_initializer='normal', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd')