如何整合所有分类器进行多标签支持向量机分类

3

我有四个标记组,想要使用SVM进行分类。

Class-A, Class-B, Class-C, Class-D

现在,如果我需要训练我的分类器来识别文本,我会将A、B、C、D中的所有文本复制到一个名为"A-against-all"的文件中。对于B、C和D同样如此。
"B-against-all" CLass B :1 , Rest all :-1
"C-against-all" CLass C :1 , Rest all :-1
"D-against-all" CLass D :1 , Rest all :-1

现在,如果我在“一对所有”上运行SVM,则会获得一个分类器作为输出。同样,我会得到其他三个分类器针对B、C和D。现在我的问题是:如何将这4个分类器整合起来以协同操作?

1
我猜OP的意思是文件“B-against-all”将把类B设为1,其余全部设为-1;同样,“C-against-all”将把类C设为1,其余全部设为-1。 - user4069366
1个回答

1
I不知道如何将2个或多个SVM分类器合并为1个。但是对于您的特定问题,您可以通过创建一个包含A、B、C和D所有数据的文件,并使用单独的标签1、2、3和4分别表示A、B、C和D来获得所需的SVM。在此组合文件上运行SVM,生成的分类器将正确地将数据点识别为Class-A、Class-B、Class-C或Class-D。
鸢尾花数据集上的SVM。鸢尾花数据集有三个类别0、1、2。0-50属于类别0,50-100属于类别1,100-150属于类别2。
>>> from sklearn import datasets as DS
>>> iris = DS.load_iris()
>>> from sklearn import svm
>>> clf=svm.SVC()
>>> clf.fit(iris.data,iris.target)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False)
>>> clf.predict(iris.data[25])
array([0])
>>> clf.predict(iris.data[75])
array([1])
>>> clf.predict(iris.data[125])
array([2])

正如你所看到的,SVM已经将数据分类为三个类别,并且预测准确。

看看这个问题:使用Scikit Learn SVM为文本分类准备数据。 这就是你需要做的。


但是 SVM 只能进行二元分类,你确定它会起作用吗? - user4197202
SVM 不仅适用于二元分类,还可以对任意数量的类进行分类。尝试这种方法,它一定会起作用。 - Irshad Bhat
我已经上传了代码,其中SVM准确地对三类数据进行分类。请检查一下。 - Irshad Bhat
1
@rzach 你应该也参考一下 bhat 建议的 http://scikit-learn.org/stable/datasets/ - user4069366
@BHATIRSHAD,你能否也回答一下这个问题(目前还没有人回答),不会花费你太多时间。https://dev59.com/dYXca4cB1Zd3GeqPK5wm - user4197202
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接