机器学习之支持向量机——R语言

机器学习之支持向量机——R语言

  • 下面是基于鸢尾花数据集的,二分类的实现代码。
#鸢尾花数据集(2自变量)
iris.subet = subset(iris,select = c("Sepal.Length","Sepal.Width","Species"),
                                 Species %in% c("versicolor","virginica"))

#查看数据特征
plot(x = iris.subet$Sepal.Length,y = iris.subet$Sepal.Width,
     col = iris.subet$Species,pch = 19)

机器学习之支持向量机——R语言_第1张图片

两类鸢尾花数据看不出是线性可分,采用高斯核函数建立支持向量机模型
library(e1071)  #线性支持向量机的包
svm.model = svm(Species ~ .,data = iris.subet,kernel = "radial",cost = 100000,scale = FALSE)
summary(svm.model)

Call:
svm(formula = Species ~ ., data = iris.subet, kernel = “radial”,
cost = 1e+05, scale = FALSE)
Parameters:
SVM-Type: C-classification
SVM-Kernel: radial
cost: 1e+05
gamma: 0.5
Number of Support Vectors: 66
( 33 33 )
Number of Classes: 2
Levels:
setosa versicolor virginica

  • 结果可视化
plot(x = iris.subet$Sepal.Length,y = iris.subet$Sepal.Width,col = iris.subet$Species,pch = 19)
points(iris.subet[svm.model$index,c(1,2)],col = "red",cex = 2) 

机器学习之支持向量机——R语言_第2张图片

table (iris.subet$Species, predict(svm.model))  # tabulate`
       setosa versicolor virginica

setosa 0 0 0
versicolor 0 37 13
virginica 0 9 41

mean(iris.subet$Species != predict(svm.model))

0.22

plot(svm.model, iris.subet)

机器学习之支持向量机——R语言_第3张图片

你可能感兴趣的:(支持向量机,机器学习,svm)