library(ggplot2)
str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
qplot(Petal.Length,Petal.Width,data=iris,color=Species)
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

MODEL

library(e1071)
m1<-svm(Species~.,data=iris)
summary(m1)
## 
## Call:
## svm(formula = Species ~ ., data = iris)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  1 
## 
## Number of Support Vectors:  51
## 
##  ( 8 22 21 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica

plot

plot(m1,data=iris,Petal.Width~Petal.Length,slice=list(Sepal.Width=3,Sepal.Length=4))

confusion matrix

pred<-predict(m1,iris)
table(pred,iris$Species)
##             
## pred         setosa versicolor virginica
##   setosa         50          0         0
##   versicolor      0         48         2
##   virginica       0          2        48
tab1<-table(predicted=pred,Actual=iris$Species)
tab1
##             Actual
## predicted    setosa versicolor virginica
##   setosa         50          0         0
##   versicolor      0         48         2
##   virginica       0          2        48

misclassification

1-sum(diag(tab1))/sum(tab1)
## [1] 0.02666667

model2

m2<-svm(Species~.,data=iris,Kernel="Linear")

summary

summary(m2)
## 
## Call:
## svm(formula = Species ~ ., data = iris, Kernel = "Linear")
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  1 
## 
## Number of Support Vectors:  51
## 
##  ( 8 22 21 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica

plot

plot(m2,data=iris,Petal.Width~Petal.Length,slice=list(Sepal.Width=3,Sepal.Width=3,Sepal.Length=4))

confusio matrix

pred<-predict(m2,iris)
tab2<-table(predicted=pred,Actual=iris$Species)
tab2
##             Actual
## predicted    setosa versicolor virginica
##   setosa         50          0         0
##   versicolor      0         48         2
##   virginica       0          2        48

misclassification

1-sum(diag(tab2))/sum(tab2)
## [1] 0.02666667

fine tune—-hyper-parameter optimization

set.seed(123)
t<-tune(svm,Species~.,data=iris,ranges = list(epsilon=seq(0,1,0.1),cost=2^(2:9)))
plot(t)

summary

summary(t)
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  epsilon cost
##        0    4
## 
## - best performance: 0.04 
## 
## - Detailed performance results:
##    epsilon cost      error dispersion
## 1      0.0    4 0.04000000 0.04661373
## 2      0.1    4 0.04000000 0.04661373
## 3      0.2    4 0.04000000 0.04661373
## 4      0.3    4 0.04000000 0.04661373
## 5      0.4    4 0.04000000 0.04661373
## 6      0.5    4 0.04000000 0.04661373
## 7      0.6    4 0.04000000 0.04661373
## 8      0.7    4 0.04000000 0.04661373
## 9      0.8    4 0.04000000 0.04661373
## 10     0.9    4 0.04000000 0.04661373
## 11     1.0    4 0.04000000 0.04661373
## 12     0.0    8 0.04666667 0.06324555
## 13     0.1    8 0.04666667 0.06324555
## 14     0.2    8 0.04666667 0.06324555
## 15     0.3    8 0.04666667 0.06324555
## 16     0.4    8 0.04666667 0.06324555
## 17     0.5    8 0.04666667 0.06324555
## 18     0.6    8 0.04666667 0.06324555
## 19     0.7    8 0.04666667 0.06324555
## 20     0.8    8 0.04666667 0.06324555
## 21     0.9    8 0.04666667 0.06324555
## 22     1.0    8 0.04666667 0.06324555
## 23     0.0   16 0.04666667 0.04499657
## 24     0.1   16 0.04666667 0.04499657
## 25     0.2   16 0.04666667 0.04499657
## 26     0.3   16 0.04666667 0.04499657
## 27     0.4   16 0.04666667 0.04499657
## 28     0.5   16 0.04666667 0.04499657
## 29     0.6   16 0.04666667 0.04499657
## 30     0.7   16 0.04666667 0.04499657
## 31     0.8   16 0.04666667 0.04499657
## 32     0.9   16 0.04666667 0.04499657
## 33     1.0   16 0.04666667 0.04499657
## 34     0.0   32 0.04666667 0.04499657
## 35     0.1   32 0.04666667 0.04499657
## 36     0.2   32 0.04666667 0.04499657
## 37     0.3   32 0.04666667 0.04499657
## 38     0.4   32 0.04666667 0.04499657
## 39     0.5   32 0.04666667 0.04499657
## 40     0.6   32 0.04666667 0.04499657
## 41     0.7   32 0.04666667 0.04499657
## 42     0.8   32 0.04666667 0.04499657
## 43     0.9   32 0.04666667 0.04499657
## 44     1.0   32 0.04666667 0.04499657
## 45     0.0   64 0.05333333 0.06126244
## 46     0.1   64 0.05333333 0.06126244
## 47     0.2   64 0.05333333 0.06126244
## 48     0.3   64 0.05333333 0.06126244
## 49     0.4   64 0.05333333 0.06126244
## 50     0.5   64 0.05333333 0.06126244
## 51     0.6   64 0.05333333 0.06126244
## 52     0.7   64 0.05333333 0.06126244
## 53     0.8   64 0.05333333 0.06126244
## 54     0.9   64 0.05333333 0.06126244
## 55     1.0   64 0.05333333 0.06126244
## 56     0.0  128 0.06000000 0.05837300
## 57     0.1  128 0.06000000 0.05837300
## 58     0.2  128 0.06000000 0.05837300
## 59     0.3  128 0.06000000 0.05837300
## 60     0.4  128 0.06000000 0.05837300
## 61     0.5  128 0.06000000 0.05837300
## 62     0.6  128 0.06000000 0.05837300
## 63     0.7  128 0.06000000 0.05837300
## 64     0.8  128 0.06000000 0.05837300
## 65     0.9  128 0.06000000 0.05837300
## 66     1.0  128 0.06000000 0.05837300
## 67     0.0  256 0.06666667 0.06285394
## 68     0.1  256 0.06666667 0.06285394
## 69     0.2  256 0.06666667 0.06285394
## 70     0.3  256 0.06666667 0.06285394
## 71     0.4  256 0.06666667 0.06285394
## 72     0.5  256 0.06666667 0.06285394
## 73     0.6  256 0.06666667 0.06285394
## 74     0.7  256 0.06666667 0.06285394
## 75     0.8  256 0.06666667 0.06285394
## 76     0.9  256 0.06666667 0.06285394
## 77     1.0  256 0.06666667 0.06285394
## 78     0.0  512 0.07333333 0.06629526
## 79     0.1  512 0.07333333 0.06629526
## 80     0.2  512 0.07333333 0.06629526
## 81     0.3  512 0.07333333 0.06629526
## 82     0.4  512 0.07333333 0.06629526
## 83     0.5  512 0.07333333 0.06629526
## 84     0.6  512 0.07333333 0.06629526
## 85     0.7  512 0.07333333 0.06629526
## 86     0.8  512 0.07333333 0.06629526
## 87     0.9  512 0.07333333 0.06629526
## 88     1.0  512 0.07333333 0.06629526

BEST MODEL

model<-t$best.model
summary(model)
## 
## Call:
## best.tune(METHOD = svm, train.x = Species ~ ., data = iris, ranges = list(epsilon = seq(0, 
##     1, 0.1), cost = 2^(2:9)))
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  4 
## 
## Number of Support Vectors:  37
## 
##  ( 6 17 14 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica

plot

plot(model,data=iris,Petal.Width~Petal.Length,slice=list(Sepal.Width=3,Sepal.Length=4))

confusion matrix

pred<-predict(model,iris)
tab3<-table(predicted=pred,Actual=iris$Species)
tab3
##             Actual
## predicted    setosa versicolor virginica
##   setosa         50          0         0
##   versicolor      0         48         0
##   virginica       0          2        50

misclassification

1-sum(diag(tab3))/sum(tab3)
## [1] 0.01333333