• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 学习|R语言实现决策树模型

      学习|R语言实现决策树模型

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2019年5月30日
      测试开头

      请思考:

      1 决策树模型的原理是什么?如何生成决策树?如何优化决策树?

      2 R语言有哪些包可以用来实现决策树模型?

      3 决策树模型挖掘的规则如何应用?


      我创建了R语言微信群,定位:R语言学习与实践,想加入的伙伴,请添加我的个人微信:luqin360,备注:R入群


      一 决策树模型的原理

      对决策树的原理请您先花10分钟时间阅读文章【决策树算法介绍及应用】。阅读的过程中,请解决好如下三个核心问题:

      1. 如何生成决策树?

      2. 如何优化决策树?

      3. 如何应用决策树?


      学习|R语言实现决策树模型

      请思考:

      • 如何计算信息熵?

      • 如何计算增益率?

      • 如何计算Gini值?


      二 R语言实现决策树模型


      1 建模流程:问题定义-数据导入-数据清洗-数据划分-构建模型-模型预测-模型评价-模型调优-模型应用

      2 使用rpart包做决策树模型

      3 使用rpart.plot包做决策树结果可视化分析

      4 模型性能评价工具:混淆矩阵


      学习|R语言实现决策树模型

      R语言代码

      问题定义:泰坦尼克号用户生死存亡的预测?


      Step1:导入数据集和数据检视

      代码

      set.seed(123)
      PATH <- './data/titanic_csv.csv'
      titanic <- read.csv(PATH)
      head(titanic)
      tail(titanic)

      shuffle.index <- sample(1:nrow(titanic))
      head(shuffle.index)

      titanic <- titanic[shuffle.index,]
      head(titanic)
      class(titanic)


      Step2:数据清洗与加工

      代码

      # 清洗数据集
      # 1 删除变量集
      # 2 变量类型转换
      # 3 删除NA
      library(dplyr)
      clean.titanic <- titanic %>% 
        dplyr::select(-c(home.dest, cabin, name, X, ticket)) %>% 
        dplyr::mutate(pclass = factor(pclass, levels = c(1, 2, 3), labels = c('Upper', 'Middle', 'Lower')),
               survived = factor(survived, levels = c(0, 1), labels = c('No', 'Yes'))) %>% 
        na.omit()
      dplyr::glimpse(clean.titanic)


      Step3:数据集划分

      代码

      # 数据集划分
      # 训练集和测试集
      library(caret)
      train.index <- createDataPartition(clean.titanic$survived, p = 0.8, list = FALSE)
      train.data <- clean.titanic[train.index, ]
      test.data <- clean.titanic[-train.index, ]

      dim(train.data)
      dim(test.data)

      # 目标变量的分布
      prop.table(table(train.data$survived))


      Step4:构建决策树模型

      代码

      library(rpart)
      library(rpart.plot)
      tree.fit <- rpart(
        survived ~ ., 
        data = train.data,
        method = 'class'
      )
      # 决策树模型结果可视化分析
      par(mfrow=c(1,1))
      rpart.plot(tree.fit, extra = 100)


      学习|R语言实现决策树模型

      请思考:

      1 如何解读决策树模型结果?


      Step5:模型预测

      代码

      # 模型的预测
      predict.unseen <- predict(tree.fit, test.data, type = 'class')


      Step6:模型性能评价-混淆矩阵

      代码

      # 模型评价-混淆矩阵
      table.mat <- table(test.data$survived, predict.unseen)
      table.mat

      # 模型新能评价
      # 模型准确度
      accuracy.test <- sum(diag(table.mat)) / sum(table.mat)
      print(paste('Accuracy for test', accuracy.test))


      学习|R语言实现决策树模型


      Step7:模型调优

      代码

      AccuracyTune <- function(fit){
        predict.unseen <- predict(fit, test.data, type='class')
        table.mat <- table(test.data$survived, predict.unseen)
        accuracy.test <- sum(diag(table.mat)) / sum(table.mat)
        accuracy.test
      }
      control <- rpart.control(
        minsplit = 4,
        minbucket = round(5/3),
        maxdepth = 3,
        cp = 0
      )

      tune.fit <- rpart(survived ~ ., data = train.data, method = 'class', control = control)
      print(paste('Accuracy for test', AccuracyTune(tune.fit)))


      学习|R语言实现决策树模型


      rpart包使用rpart.control()函数来对决策树模型的超参数(无法从数据中学习到的参数,需要事先设定的参数)做控制。重要参数说明:

      • minsplit:算法分割之前,设置Node中最小的观察数量(样本数量)

      • minbucket:设置叶子节点最小观察数量

      • maxdepth:设置最终数的任何Node的最大深度

      请思考:

      请对该问题使用C5.0决策树算法?

      附件:

      本文数据集,R脚本请点击阅读原文下载和使用。

      您在阅读中有什么问题,请留言。若是觉得有用,请您点赞和分享给其他朋友,感谢支持和分享。


      公众号推荐:

      数据人才(ID:datarencai)

      (一个帮助数据人才找工作,

      帮助数据公司招人才的公众号,

      也分享数据人学习和生活的有趣事情。)

      学习|R语言实现决策树模型


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      向量集合运算
      2019年5月30日

      下一篇文章

      因子碎碎念
      2019年5月31日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?