R(e1071) 中是不是有直接实现多类 SVM

Posted

技术标签:

【中文标题】R(e1071) 中是不是有直接实现多类 SVM【英文标题】:Is there a direct implementation of multiclass SVM in R(e1071)R(e1071) 中是否有直接实现多类 SVM 【发布时间】:2016-09-21 03:42:47 【问题描述】:

我有五个类,我想使用 SVM(e1071 包)进行分类。我可以看到一些使用 SVM 进行二进制分类的好例子,但是,对于多类支持,一些成员建议使用 One_Vs_Rest 或 One_vs_One 二进制分类器,然后将它们组合起来以获得最终预测。是否有 Multiclass 的直接实现(任何一种方法都适合我)?

【问题讨论】:

【参考方案1】:

是的,现在,我找到了解决方案。我使用了 R 中的基本帮助文件,并使用 e1071 实现了 One_vs_One 多类,它非常简短,并且带有清晰的 cmets。

library(xlsx)
library(gdata)
data(iris)
library(e1071)
library(caTools)

##---------- Split the overall dataset into two parts:70% for training and 30% for testing-----------
index_iris<-sample.split(iris$Species,SplitRatio=.7) 
trainset_iris<-iris[index_iris==TRUE,] 
testset_iris<-iris[index_iris==FALSE,] 
y <- testset_iris$Species

##---------- Now Create an SVM Model with the training dataset--------------------
model <- svm(Species ~ ., data = trainset_iris)
# print(model)
# summary (model)

##-------------Use the model to predict the test dataset so that we can find the accuracy of the model-----
pred <- predict(model,testset_iris)
table(pred, y)

##-------------- Compute decision values and probabilities--------------
pred <- predict(model, testset_iris, decision.values = TRUE)
attr(pred, "decision.values")

【讨论】:

以上是关于R(e1071) 中是不是有直接实现多类 SVM的主要内容,如果未能解决你的问题,请参考以下文章

R:在 e1071 包中是不是有比 libsvm 替代的 SVM 实现? [关闭]

如何在 R 中构建多类 SVM?

R - SVM 训练后的奇怪错误/警告 (e1071)

R中的SVM函数

如何减少 SVM 的执行时间

R中e1071包的svm函数中概率= TRUE的功能