如何在R中使用e1071包的'svm'进行多类分类

Str*_*keR 11 r classification svm libsvm

我想使用package 的svm功能执行多类分类e1071.但是从我从文档中了解到的svm,它只能执行二进制分类.vignettes文档告诉它多类分类:" 为了允许多类分类,libsvm通过拟合所有二元子分类器并通过投票机制找到正确的类来使用一对一技术 ".
我仍然不明白的是,如果我们可以进行多级分类svme1071R中?如果是,请解释我们如何在iris数据集上完成.

idl*_*erb 21

虹膜数据集包含三个类标签:"Iris setosa","Iris virginica"和"Iris versicolor".要使用svm采用平衡的一对一分类策略,您可以训练三个二元分类器:

第一个分类器的训练集仅包含"Iris setosa"和"Iris virginica"实例.第二个分类器的训练集仅包含"Iris setosa"和"Iris versicolor"实例.第三个分类器的训练集 - 我想现在你已经知道了 - 只包含"Iris virginica"和"Iris versicolor"实例.

要对未知实例进行分类,请应用所有三个分类器.然后,简单的投票策略可以选择最频繁分配的类别标签,更复杂的投票策略也可以考虑每个分配的类别标签的svm置信度分数.

编辑(此原则开箱即用svm):

# install.packages( 'e1071' )
library( 'e1071' )
data( iris )
model <- svm( iris$Species~., iris )
res <- predict( model, newdata=iris )
Run Code Online (Sandbox Code Playgroud)

  • 好的:)所以简短的回答是肯定的,`svm`也可以进行多类分类,它的工作方式与二进制相同(参见我的回答中的编辑). (4认同)
  • 这是解决问题的一种非常好的方式.但是,在走到那么远之前,我想知道`e1071`的`svm`是否可以直接执行这种多类分类. (2认同)