栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > R语言

R语言 决策树、svm支持向量机、随机森林

R语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

R语言 决策树、svm支持向量机、随机森林

本人正在学习R语言,想利用这个平台记录自己一些自己的学习情况,方便以后查找,也想分享出来提供一些资料给同样学习R语言的同学们。(如果内容有错误,欢迎大家批评指正)

1.决策树
我们使用的还是RStudio自带的数据集iris。

#######################决策树模型
install.packages("rpart")#安装库
library("rpart")
dt<-function(data,n,form){
  require(rpart)
  accu<-0
  for(i in 1:1000){
    ind<-sample(1:nrow(data),round(0.7*nrow(data)),replace=F)
    treemodel<-rpart(form,data[ind,],method="class")
    #决策树 method表示决策树的类型,我们这里是分类问题所以选择class class表示分类树
    #得到模型
    treepre<-predict(treemodel,data[-ind,-n],type="class")
    #根据模型预测
    t<-table(treepre,data[-ind,n])
    accu[i]<-sum(diag(t)/sum(t))
  }
  return (c(mean(accu),sd(accu)))#统计1000次模型准确率和标准差
}
data<-iris
n<-5
form<-(as.formula("Species~."))
dt(data,n,form)

生成决策树

install.packages("rpart.plot")
library("rpart.plot")
ind<-sample(1:nrow(iris),round(0.7*nrow(iris)),replace=F)
treemodel<-rpart(as.formula("Species~."),iris[ind,],method="class")
rpart.plot(treemodel,uniform=T)
#形成决策树 uniform参数代表什么意思我一直没找到,希望如果有知道的同学可以分享一下

结果
花瓣长度小于2.5是setosa品种,大于等于2.5且花瓣宽度小于1.8的是cersicolor品种,大于等于2.5且花瓣宽度大于等于1.8的为virginica

2.svm支持向量机

支持向量机是一种可以进行非线性分类的方法,目的是找到一个超平面对数据进行分割,分割原则是线性最大化。
例如,对下图,要想分割空心圆和实心圆,其中间可以有很多条直线,支持向量机的作用就是在这些直线中找到一条和两侧的点间隔最大的直线,这种向量机叫做线性可分支持向量机。

还有一种情况就是对于非线性问题,支持向量机也可以求出下图两种图形之间的非线性分割。

#########################svm支持向量机
install.packages("kernlab")
library("kernlab")
data<-iris
ind<-sample(1:nrow(data),100,replace=F)
svmmodel<-ksvm(as.formula("Species~."),data[ind,],C=10,type="C-svc")
#得到模型 type表示是用于分类还是回归,还是检测,默认为C-svc和eps-svr C为惩罚数
svmpre<-predict(svmmodel,data[-ind,])
t<-table(data[-ind,5],svmpre)
sum(diag(t))/sum(t)

3.随机森林

解决决策树泛化能力弱的缺点

#################################randomForest
install.packages("randomForest")
library("randomForest")
data<-read.table("C:\Users\de'l'l\Desktop\学习\R语言\银行信用评估.csv",sep=",",head=T)
ind<-sample(1:15,round(0.7*15),replace=F)
rfmodel<-randomForest(as.formula("是否批准~."),data[ind,],importance=TRUE,proximity=FALSE)
#importance逻辑参数,是否计算各个变量在模型中的重要性,默认不计算
#proximity逻辑参数,是否计算模型的临近矩阵
rfpre<-predict(rfmodel,data[-ind,])
t<-table(data[-ind,15],rfpre)
sum(diag(t))/sum(t)

生成的随机森林模型

附:决策树和随机森林详解https://blog.csdn.net/weixin_41744624/article/details/105556018
支持向量机详解
https://www.cnblogs.com/liquan-anran/p/9548563.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号