【ML--14】在R语言中使用SVM算法做多分类预测

我们采用iris数据集进行学习和测试,最后看看它的效果。
1、载入SVM算法包

library(e1071)

2、划分训练和测试集

划分训练和测试集时,采用set.seed函数设随机数种子,这能保证划分得到的训练和测试集与C5.0完全相同,方便后续测试效果的比较。

set.seed(2016)
train.indeces<-sample(1:nrow(iris),100)
iris.train<-iris[train.indeces,]
iris.test<-iris[-train.indeces,]

3、建立SVM模型

采用svm函数基于训练集iris.train建立SVM模型:
model<-svm(formula=Species~.,data=iris.train)
svm函数参数:
formula:模型的方程
data:训练集

4、 测试数据

采用测试数据集iris.test进行测试:
results<-predict(object=model,newdata=iris.test,type=”class”)
采用predict泛型函数进行预测:
object:svm类的模型对象
newdata:测试集
type:预测类型,type = “class”返回所属的类,type = “prob”返回概率值

5、查看预测效果
res<-table(results,iris.test$Species)
res

6、完整代码


rm(list=ls())
gc()
options(scipen = 200)
library(e1071)

iris <- iris
##########划分训练和测试集#################
set.seed(2016)
train.indeces<-sample(1:nrow(iris),100)
iris.train<-iris[train.indeces,]
iris.test<-iris[-train.indeces,]


########采用svm函数基于训练集iris.train建立SVM模型:
model<-svm(formula=Species~.,data=iris.train)

results_train<-predict(object=model,newdata=iris.train,type="class")

#打印混淆矩阵
(res_train<-table(results_train,iris.train$Species))

##准确率
(accurary<-sum(diag(res_train))/sum(res_train))



#############用测试数据集预测#####################
results_test<-predict(object=model,newdata=iris.test,type="class")
(res_test<-table(results_test,iris.test$Species))

##准确率
(accurary<-sum(diag(res_test))/sum(res_test))

7、运行结果

> rm(list=ls())
> gc()
          used (Mb) gc trigger  (Mb) max used  (Mb)
Ncells 1591792 85.1    2637877 140.9  2637877 140.9
Vcells 2765843 21.2    5208873  39.8  5208842  39.8
> options(scipen = 200)
> library(e1071)
> 
> iris <- iris
> ##########划分训练和测试集#################
> set.seed(2016)
> train.indeces<-sample(1:nrow(iris),100)
> iris.train<-iris[train.indeces,]
> iris.test<-iris[-train.indeces,]
> 
> 
> ########采用svm函数基于训练集iris.train建立SVM模型:
> model<-svm(formula=Species~.,data=iris.train)
> 
> results_train<-predict(object=model,newdata=iris.train,type="class")
> 
> #打印混淆矩阵
> (res_train<-table(results_train,iris.train$Species))

results_train setosa versicolor virginica
   setosa         38          0         0
   versicolor      0         31         1
   virginica       0          1        29
> 
> ##准确率
> (accurary<-sum(diag(res_train))/sum(res_train))
[1] 0.98
> 
> 
> 
> #############用测试数据集预测#####################
> results_test<-predict(object=model,newdata=iris.test,type="class")
> (res_test<-table(results_test,iris.test$Species))

results_test setosa versicolor virginica
  setosa         12          0         0
  versicolor      0         18         2
  virginica       0          0        18
> 
> ##准确率
> (accurary<-sum(diag(res_test))/sum(res_test))
[1] 0.96
> 
  • 12
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东华果汁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值