R语言进行集成学习算法:随机丛林

打印 上一主题 下一主题

主题 1550|帖子 1550|积分 4650

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # 10.4 集成学习及随机森林
  2. # 导入car数据集
  3. car <- read.table("data/car.data",sep = ",")
  4. # 对变量重命名
  5. colnames(car) <- c("buy","main","doors","capacity",
  6.                    "lug_boot","safety","accept")
  7. # 随机选取75%的数据作为训练集建立模型,25%的数据作为测试集用来验证模型
  8. library(caret)
  9. library(ggplot2)
  10. library(lattice)
  11. # 构建训练集的下标集
  12. ind <- createDataPartition(car$accept,times=1,p=0.75,list=FALSE)
  13. # 构建测试集数据好训练集数据
  14. carTR <- car[ind,]
  15. carTE <- car[-ind,]
  16. carTR<- within(carTR,accept <- factor(accept,levels=c("unacc","acc","good","vgood")))
  17. carTE<- within(carTE,accept <- factor(accept,levels=c("unacc","acc","good","vgood")))
  18. # 使用adabag包中的bagging函数实现bagging算法
  19. #install.packages("adabag")
  20. library(adabag)
  21. bagging.model <- bagging(accept~.,data=carTR)
  22. # 使用adabag包中的boosting函数实现boosting算法
  23. boosting.model <- boosting(accept~.,data=carTR)
  24. # 使用randomForest包中的randomForest函数实现随机森林算法
  25. #install.packages("randomForest")
  26. library(randomForest)
  27. randomForest.model <- randomForest(accept~.,data=carTR,ntree=500,mtry=3)
  28. # 预测结果,并构建混淆矩阵,查看准确率
  29. # 构建result,存放预测结果
  30. result <- data.frame(arithmetic=c("bagging","boosting","随机森林"),
  31.                      errTR=rep(0,3),errTE=rep(0,3))
  32. for(i in 1:3){
  33.   # 预测结果
  34.   carTR_predict <- predict(switch(i,bagging.model,boosting.model,randomForest.model),
  35.                            newdata=carTR) # 训练集数据
  36.   carTE_predict <- predict(switch(i,bagging.model,boosting.model,randomForest.model),
  37.                            newdata=carTE) # 测试集数据
  38.   # 构建混淆矩阵
  39.   tableTR <- table(actual=carTR$accept,
  40.                    predict=switch(i,carTR_predict$class,carTR_predict$class,carTR_predict))
  41.   tableTE <- table(actual=carTE$accept,
  42.                    predict=switch(i,carTE_predict$class,carTE_predict$class,carTE_predict))
  43.   # 计算误差率
  44.   result[i,2] <- paste0(round((sum(tableTR)-sum(diag(tableTR)))*100/sum(tableTR),
  45.                               2),"%")
  46.   result[i,3] <- paste0(round((sum(tableTE)-sum(diag(tableTE)))*100/sum(tableTE),
  47.                               2),"%")
  48. }
  49. # 查看结果
  50. result
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表