在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
#支持向量机预测问题代码 install.packages("e1071") #下载包 library(e1071) #加载包 attach(iris) #以iris数据为例 x=subset(iris,select=-Species) #subset从数据集取子集,第一个参数表示数据源,select选择属性 y=Species svm1=svm(Species~.,data=iris) #品种是因变量,其它所有变量对因变量做支持向量机回归 summary(svm1) #结果摘要 svm1$labels #查看类别标签 pred=predict(svm1,x) #预测结果 table(pred,y) #预测结果和真实结果混淆矩阵 plot(svm1,iris,Petal.Width~Petal.Length,slice = list(Sepal.Width=2,Sepal.Length=4)) #iris包括四个属性,在二维图形中需要指定其余二维,才能显示区域边界 #支持向量机对参数非常敏感,下面以radial核函数、损失系数2以及核函数参数0.8训练一个新的分类器, #损失系数表明了分类器对错误分类的容忍度,损失系数越大,表面该分类模型越不能容忍错误分类, #对应的误差就越小,但在线性不可分模型中容易造成过拟合的情况 svm2=svm(Species~.,data = iris,kernel="radial",cost=2,gamma=0.8) summary(svm2) pred=predict(svm2,x) table(pred,y) #只有一例分错类,进一步检验结果,按80%和20%比例分为训练集和测试集检验 set.seed(2019) #随机种子 index2=sample(x=2,size=nrow(iris),replace=TRUE,prob=c(0.8,0.2)) #按照80%和20%比例划分训练集和测试集 train2=iris[index2==1,] #训练集 test2=iris[index2==2,] #测试集 iris.svm=svm(Species~.,data = train2,kernel="radial",cost=2,gamma=0.8) pred2=predict(iris.svm,test2) #用测试集检验效果 table(pred2,test2$Species) #混淆矩阵
软件结果展示
> library(e1071) #加载包 > attach(iris) > x=subset(iris,select=-Species) > y=Species > svm1=svm(Species~.,data=iris) #品种是因变量,其它所有变量对因变量做支持向量机回归 > summary(svm1) #结果摘要
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
> svm1$labels [1] 1 2 3 > pred=predict(svm1,x) > table(pred,y) y pred setosa versicolor virginica setosa 50 0 0 versicolor 0 48 2 virginica 0 2 48 > plot(svm1,iris,Petal.Width~Petal.Length,slice = list(Sepal.Width=2,Sepal.Length=4)) #iris包括四个属性,在二维图形中需要指定其余二维,才能显示区域边界 > #支持向量机对参数非常敏感,下面以radial核函数、损失系数2以及核函数参数0.8训练一个新的分类器, > #损失系数表明了分类器对错误分类的容忍度,损失系数越大,表面该分类模型越不能容忍错误分类, > #对应的误差就越小,但在线性不可分模型中容易造成过拟合的情况 > svm2=svm(Species~.,data = iris,kernel="radial",cost=2,gamma=0.8) > summary(svm2) Call:
svm(formula = Species ~ ., data = iris, kernel = "radial",
cost = 2, gamma = 0.8)
Parameters:
SVM-Type: C-classification
SVM-Kernel: radial
cost: 2
gamma: 0.8
Number of Support Vectors: 56
( 12 22 22 )
Number of Classes: 3
Levels:
setosa versicolor virginica
> pred=predict(svm2,x) > table(pred,y) y
pred setosa versicolor virginica
setosa 50 0 0
versicolor 0 49 0
virginica 0 1 50
> index2=sample(x=2,size=nrow(iris),replace=TRUE,prob=c(0.8,0.2)) #按照80%和20%比例划分训练集和测试集 > train2=iris[index2==1,] > test2=iris[index2==2,] #测试集 > iris.svm=svm(Species~.,data = train2,kernel="radial",cost=2,gamma=0.8) > pred2=predict(iris.svm,test2) > table(pred2,test2$Species) pred2 setosa versicolor virginica
setosa 4 0 0
versicolor 0 8 1
virginica 1 0 11
|
请发表评论