R 实现 支持向量机 support vector machine
【摘要】 R 实现 支持向量机 support vector machine
@[TOC](R 实现 支持向量机 support vector machine)
1 工具准备
R中有直接写好的包,可以直接使用
install.packages("e1071")
library(e1071)
2 划分样本
对训练集和测试集进行划分
index=sample(1:nrow(iris),100)
train=iris[index,]
test=iris[-index,]
3 模型建立
用工具包中的方法建立模型
model1=svm(Species~.,data=train,kernel="linear")
model1
summary(model1)
p1=predict(model1,test)
table(test$Species,p1)
4 交叉验证
cross参数是交叉验证比例
#num-fold cross validation
model2=svm(Species~.,data=train,kernel="linear",cross=7)
summary(model2)
5 软间隔选择
cost是划分软间隔的距离
model3=svm(Species~.,data=train,kernel="linear",cross=5,cost=50)
model3$accuracies
model3$tot.accuracy
编写软间隔方法,直接使用软间隔
acc=function(cost){
model=svm(Species~.,data=train,kernel="linear",cross=5,cost=cost)
p=predict(model,test)
A=as.matrix(table(test$Species,p))
acc=(sum(diag(A))/sum(A))
return(acc)
}
acc(10)
创建等差数列选择最优软间隔
C=seq(0.01,100,length=100)
Acc=NULL
for (i in 1:length(C)) {
model=svm(Species~.,data=train,kernel="linear",cross=5,cost=C[i])
p=predict(model,test)
A=as.matrix(table(test$Species,p))
Acc[i]=(sum(diag(A))/sum(A))
}
Acc
which(Acc==max(Acc))
plot(C,Acc)
6 非线性核函数参数
使用gamma参数调整核函数
#kernel function
model4=model3=svm(Species~.,data=train,kernel="radial",cross=5,cost=5,gamma=0.1)
summary(model4)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)