R语言实现决策树

tail(iris)
library(rpart)
data("iris")#加载数据
attach(iris)#简化过程,即不使用$也可以访问iris
s<-sample(nrow(iris),size=120,replace=F)
#使用sample进行随机抽样从第1行到nrow的iris
#从中抽出120行,replace=F是不放回的抽样
#默认是按照column(列)抽样,这里我们按照row(行)抽样
trainset<-iris[s,]#训练集取iris中的s行
testset<-iris[-s,]#测试集取iris中的-s行
fit1<-rpart(Species~.,data=trainset)
#构建模型,Species是因变量,~.表示其他的点都是自变量
summary(fit1)#总结模型
library("rpart.plot")#安装rpart的绘图工具
rpart.plot(fit1,type=2)#绘制fit1的决策树曲线
pre = predict(fit1,testset,type = "class")
#使用predict对测试集进行预测
t=table(pre,testset$Species)
#画出混淆矩阵
heatmap(t)
acc=sum(diag(t)/nrow(testset))
#计算准确率,预测值t矩阵对角线除以测试集
print(acc)#算出准确率
s<-sample(nrow(iris),size=60,replace=F)#当取的训练集数减小到60,最后输出的准确率下降到百分之94
s<-sample(nrow(iris),size=20,replace=F)#当取的训练集数减小到60,最后输出的准确率下降到百分之64
a=c[1:10]
a#间隔取数字
sample(a,size = 3,replace = FALSE)
#随机取数字 使用sample对总体进行随机抽样是没有问题的,但是随着抽样的变大,每一次抽出来的样本都较为接近,这导致最后的误差值基本稳定
posted @ 2021-04-25 21:10  KONGQer  阅读(591)  评论(0)    收藏  举报