我有一个机器学习分类问题,有3个可能的类(A类,B类和C类)。请让我知道哪一个会更好? - 将问题分解为2个二进制分类:首先确定它是A类还是类'不是A'。然后,如果它是Class' Not A',那么另一个二进制分类将分类为B类或C类
答案 0 :(得分:1)
二进制分类最后可以使用sigmoid
函数(从0平滑到1)。这样我们才能知道如何对两个值进行分类。
from keras.layers import Dense
model.add(Dense(1, input_dim=8, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
对于多类分类,您通常会在最后一层使用softmax
,下一个示例中的神经元数将为10,表示10个选择。
from keras.layers import Dropout
model.add(Dense(512,activation='relu',input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))
但是,您也可以将softmax
与最后一层的2个神经元一起用于二进制分类:
model.add(Dense(2, activation='softmax'))
希望这对分类器几乎没有直觉。
答案 1 :(得分:-1)
您所描述的是用于多类别分类的一种方法 它被称为One vs. All / One vs. Rest。
最好的方法是选择一个包含两个选项的良好分类器框架,并使用交叉验证过程选择更好的分类框架。