本人正在学习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



