是否在R中直接实现了多类SVM(e1071)

时间:2016-05-24 05:16:24

标签: svm

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

1 个答案:

答案 0 :(得分:0)

是的,现在,我得到了解决方案。我使用了R的基本帮助文件,并使用e1071实现了One_vs_One Multiclass,它非常简短,并且有明确的注释。

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")