Support vector machines (SVMs) are supervised learning models with associated learning algorithms that analyze data and recognize patterns, used for classification and regression analysis.
# install.packages('ISLR')
library('ISLR')
print(head(iris))
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
# install.packages('e1071')
library(e1071)
# help('svm')
# create a support vector machine model
model <- svm(Species ~., data = iris)
summary(model)
##
## Call:
## svm(formula = Species ~ ., data = iris)
##
##
## Parameters:
## SVM-Type: C-classification
## SVM-Kernel: radial
## cost: 1
## gamma: 0.25
##
## Number of Support Vectors: 51
##
## ( 8 22 21 )
##
##
## Number of Classes: 3
##
## Levels:
## setosa versicolor virginica
# you should train your model first, then predict, but we are training our data next chunk
pred.values <- predict(model, iris[1:4])
table(pred.values, iris[,5])
##
## pred.values setosa versicolor virginica
## setosa 50 0 0
## versicolor 0 48 2
## virginica 0 2 48
# summary(model)
tune.results <- tune(svm, train.x = iris[1:4], train.y =iris[,5], kernel= 'radial',,ranges = list(cost=c(0.5, 1, 1.5), gamma = c(0.1, 0.5, 0.7)))
summary(tune.results)
##
## Parameter tuning of 'svm':
##
## - sampling method: 10-fold cross validation
##
## - best parameters:
## cost gamma
## 1.5 0.1
##
## - best performance: 0.03333333
##
## - Detailed performance results:
## cost gamma error dispersion
## 1 0.5 0.1 0.04000000 0.07166451
## 2 1.0 0.1 0.04000000 0.06440612
## 3 1.5 0.1 0.03333333 0.04714045
## 4 0.5 0.5 0.04666667 0.07062333
## 5 1.0 0.5 0.04666667 0.06324555
## 6 1.5 0.5 0.04666667 0.06324555
## 7 0.5 0.7 0.05333333 0.07568616
## 8 1.0 0.7 0.05333333 0.07568616
## 9 1.5 0.7 0.05333333 0.07568616
# cost = 1.5
# Gamma = 0.1
tune.svm <- svm(Species ~., data = iris, kernel= 'radial', cost = 1.5, gamma = 0.1)
summary(tune.svm)
##
## Call:
## svm(formula = Species ~ ., data = iris, kernel = "radial", cost = 1.5,
## gamma = 0.1)
##
##
## Parameters:
## SVM-Type: C-classification
## SVM-Kernel: radial
## cost: 1.5
## gamma: 0.1
##
## Number of Support Vectors: 50
##
## ( 4 23 23 )
##
##
## Number of Classes: 3
##
## Levels:
## setosa versicolor virginica