3688 0

R语言决策树案例分析 [推广有奖]

  • 2关注
  • 5粉丝

已卖:31份资源

本科生

50%

还不是VIP/贵宾

-

威望
0
论坛币
297 个
通用积分
1.0115
学术水平
8 点
热心指数
11 点
信用等级
5 点
经验
2128 点
帖子
74
精华
0
在线时间
78 小时
注册时间
2016-9-28
最后登录
2024-12-23

楼主
伪数据分析师 发表于 2016-11-17 22:15:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
最近学习了决策树,现将学习内容呈现如下
代码注释比较详细,直接上代码:(数据在最后附录)
  1. library(rpart)  
  2. library(rpart.plot)
  3. #第一个决策树
  4. data<-read.table(file.choose(),header = T)
  5. data$V35<-factor(data$V35,levels = 1:6,
  6.                  labels = c("牛皮癣","SE皮炎",
  7. "扁平苔癣","玫瑰癣","国外皮炎","毛发红癣"))#转化为因子
  8. set.seed(1)#设定种子器
  9. train<-sample(nrow(data),0.7*nrow(data))#抽取训练集和测试集
  10. data.train<-data[train,]#训练集
  11. data.validata<-data[-train,]#测试集
  12. dtree<-rpart(V35~.,data = data.train,
  13.              method = "class",
  14.              parms=list(split="gini"))

  15. rpart.plot(dtree,type=2,extra=102,
  16.            shadow.col = "gray",box.col="green",
  17.            border.col="blue",split.col="red",
  18.            split.cex=1,main="决策树")
  19. dtree.pred<-predict(dtree,data.validata,
  20.                     type="class")#预测
  21. dtree.perf<-table(data.validata$V35,dtree.pred)
  22. dtree.perf#评估预测的准确性
  23. dtree$cptable
  24. plotcp(dtree)#复杂度参数cp的描述
  25. dtree.pruned<-prune(dtree,cp=0.08)#剪枝
  26. rpart.plot(dtree.pruned,type=2,extra=102,
  27.            shadow.col = "gray",box.col="green",
  28.            border.col="blue",split.col="red",
  29.            split.cex=1,main="决策树")
  30. dtree.pred<-predict(dtree.pruned,data.validata,
  31.                     type="class")#再进行预测
  32. dtree.perf<-table(data.validata$V35,dtree.pred,
  33.                   dnn=c("actual","predicted"))
  34. dtree.perf#评估预测的准确性
复制代码
注:set.seed()的使用
例:
  1. x<-1:1000
  2. set.seed(1)
  3. sample(x,10)
复制代码
  1. x<-1:1000
  2. sample(x,10)
复制代码
自己检验一下,看看有什么区别。

  1. #第二个决策树
  2. data1<-read.csv(file.choose(),header = F)
  3. names(data1)<-c("class","age","gender","state")
  4. #给数据集data的列命名
  5. set.seed(1)
  6. train1<-sample(nrow(data1),0.7*nrow(data1))
  7. data1.train1<-data1[train1,]
  8. data1.validate1<-data1[-train1,]
  9. dtree1<-rpart(state~gender+age+class,
  10.              data=data1,method = "class",
  11.              parms = list(split="information"))
  12. rpart.plot(dtree1,type=2,extra=102,
  13.            shadow.col = "gray",box.col="green",
  14.            border.col="blue",split.col="red",
  15.            split.cex=1,main="决策树")
  16. dtree1.pred1<-predict(dtree1,
  17.                       data1.validate1,
  18.                       type="class")
  19. dtree1.perf1<-table(data1.validate1$state,
  20.                     dtree1.pred1,
  21.                     dnn=c("actual","predict"))
  22. dtree1.perf1
  23. dtree1$cptable
  24. plotcp(dtree1)
  25. dtree1.pruned<-prune(dtree1,cp=0.03)
  26. rpart.plot(dtree1.pruned,type=2,extra=102,
  27.            shadow.col = "gray",box.col="green",
  28.            border.col="blue",split.col="red",
  29.            split.cex=1,main="决策树")
  30. dtree1.pred1<-predict(dtree1.pruned,
  31.                       data1.validate1,
  32.                       type="class")
  33. dtree1.perf1<-table(data1.validate1$state,
  34.                     dtree1.pred1,
  35.                     dnn=c("actual","predict"))
  36. dtree1.perf1
复制代码

  1. #第三个决策树
  2. set.seed(12)
  3. train2<-sample(nrow(kyphosis),
  4.                0.7*nrow(kyphosis))
  5. kyphosis.train<-kyphosis[train,]
  6. kyphosis.validate<-kyphosis[-train,]
  7. dtree2<-rpart(Kyphosis~Age+Number+Start,
  8.              data=kyphosis,method = "class",
  9.              parms = list(split="information"))
  10. rpart.plot(dtree2,type=2,extra=2,
  11.            shadow.col = "gray",box.col="green",
  12.            border.col="blue",split.col="red",
  13.            split.cex=1,main="决策树")
  14. dtree2.pred2<-predict(dtree2,kyphosis.validate,
  15.                       type="class")
  16. dtree2.perf2<-table(kyphosis.validate$Kyphosis,
  17.                     dtree2.pred2)
  18. dtree2.perf2
  19. dtree2$cptable
  20. plotcp(dtree2)
  21. #不需要再剪枝
复制代码


附录:第一个决策树的数据 Dermatology1.txt (25.85 KB, 需要: 5 个论坛币)
第二个决策树的数据 Titanic.xls (64.96 KB, 需要: 5 个论坛币) (由于csv格式上传不了,因此改成了xls,所以下载完成以后请改成csv格式)
第三个决策树的数据是R包中自带的数据kyphosis


有疑问可以留言。。。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:案例分析 决策树 R语言 Library rpart 案例分析

本帖被以下文库推荐

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-28 17:00