【问题标题】:How to integrate all the classifiers for multilabel svm classification如何集成所有分类器以进行多标签 svm 分类
【发布时间】:2015-01-27 22:49:23
【问题描述】:

我有 4 个标记组,我想使用 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

现在,如果我在“A-against-all”上运行 SVM,那么我会得到一个分类器作为输出。 同样,我得到了另外三个 B、C 和 D 分类器。

现在我的问题是: - 我如何整合这 4 个分类器以便统一操作?

【问题讨论】:

  • 我猜 OP 的意思是说文件“B-against-all”的 B 类为 1,其余全部为 -1,类似地“C-against-all”将具有类-C 为 1,其余为 -1

标签: python nlp svm


【解决方案1】:

我不知道如何将 2 个或更多 SVM 分类器合并为 1 个。但是对于您的特定问题,您可以通过创建一个包含 A、B、C 和 D 的所有数据的文件来获得所需的 SVM,并带有单独的标签,例如 @ 987654323@ 分别为A, B, C & D。在这个组合文件上运行 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 将数据分类为三个类别标签并准确预测。

看看这个问题:Prepare data for text classification using Scikit Learn SVM.这就是你需要做的。

【讨论】:

  • 但是 SVM 不是只对二进制分类进行操作吗?你确定它会起作用吗?
  • SVM 不仅仅对二进制分类进行操作。它可以用任意数量的类进行分类。试试这个方法。它肯定会起作用。
  • 我上传了代码,其中 SVM 准确地将数据分类为三个类别。检查一下。
  • @rzach 您还应该按照 bhat 的建议参考 scikit-learn.org/stable/datasets
  • @BHATIRSHAD 非常感谢。但是我如何为 svm 准备数据。实际上我的数据是文本数据。类:“制药”、“零售”、“食品和旅游”。我为这些类中的每一个都有 100 个文本文件。现在如何转换这些文本文件以便在 SVM 中使用?
猜你喜欢
  • 2012-04-02
  • 2013-06-19
  • 2016-07-31
  • 2018-10-02
  • 2014-09-21
  • 2014-05-12
  • 1970-01-01
  • 2020-06-26
相关资源
最近更新 更多