Search code examples
rsvmmulticlass-classification

how do find accuracy of multi-classification svm?


in this website: https://medium.com/@ODSC/build-a-multi-class-support-vector-machine-in-r-abcdd4b7dab6

it says that we can use it for predict

   prediction <- predict(svm1, test_iris)
  > xtab <- table(test_iris$Species, prediction)
  > xtab          prediction
       setosa versicolor virginica
   setosa         20         0          0
  versicolor      0        20          1
  virginica       0         0         19

and use this for finding accuracy

   (20+20+19)/nrow(test_iris)  # Compute prediction accuracy

But when I have very very large data set I even can not see table how I can find this number (20+20+19)? to find accuracy?


Solution

  • You can get the correct classified with diag:

    library(e1071)
    svm1 <- svm(Species~., data=iris)
    prediction <- predict(svm1, iris)
    xtab <- table(iris$Species, prediction)
    
    sum(diag(xtab))/sum(xtab) #Overall
    #[1] 0.9733333
    
    diag(xtab)/rowSums(xtab) #For each class per observation
    #    setosa versicolor  virginica 
    #      1.00       0.96       0.96
    
    diag(xtab)/colSums(xtab) #For each class per prediction
    #    setosa versicolor  virginica 
    #      1.00       0.96       0.96