作者 | 二缺叶枫

来源 | R友舍

最近在做一些特征提取的工作,过程中因为要展现一些决策树的逻辑规则,所以就简单的绘制了生成的树。BUT!plot画出来的风格简直不能忍,于是乎就去查找了各种美化方法,今天要说的就是我是怎么美化一颗树的。

先来看看最初画出来的图!要画的数据集大概是这个样子的。

head(kyphosis)

Kyphosis Age Number Start

1   absent  71      3     5

2   absent 158      3    14

3  present 128      4     5

4   absent   2      5     1

5   absent   1      4    15

6   absent   1      2    16

kyphosis数据集,是从儿童接受外科脊柱矫正手术中来的,数据集有4列、81行。

1.kyphosis:采取手术后依然出现脊柱后凸(驼背)
2.Age:单位是“月”
3.Number:代表进行手术的脊柱椎骨的数目
4.Start:在脊柱上从上往下数、参与手术的第一节椎骨所在的序号

现在来画图:

library(rpart)

fit <- rpart(Kyphosis ~ Age +  Start, data = kyphosis)

par(mar = rep(0.1, 4))

plot(fit, branch = 1)

text(fit, use.n = TRUE)

感觉太单调了,不够美观!瞬间对树没有任何研究的兴趣了。稍微变化一下看看。

调用rpart.plot包进行绘图。

library(rpart.plot)

rpart.plot(fit,type=4,extra=1)

这个好看多了,再试试rattle包的fancyRpartPlot函数。

library(rattle)

fancyRpartPlot(fit)

总的来说fancyRpartPlot函数与rpart.plot函数画出来的效果相差不大,但是每个节点图还是稍微有修改,包含的信息量更佳丰富,同时图形作了阴影修饰。

最后看看决策树生成的逻辑:

fit

n= 81

node), split, n, loss, yval, (yprob)

* denotes terminal node

1) root 81 17 absent (0.79012346 0.20987654)

2) Start>=8.5 62  6 absent (0.90322581 0.09677419)

4) Start>=14.5 29  0 absent (1.00000000 0.00000000) *

5) Start< 14.5 33  6 absent (0.81818182 0.18181818)

10) Age< 55 12  0 absent (1.00000000 0.00000000) *

11) Age>=55 21  6 absent (0.71428571 0.28571429)

22) Age>=111 14  2 absent (0.85714286 0.14285714) *

23) Age< 111 7  3 present (0.42857143 0.57142857) *

3) Start< 8.5 19  8 present (0.42105263 0.57894737) *

虽然也能看出个所以然来,BUT!还是不够高逼格,再来改改!

幸运的是rattle包自带规则解析函数(rattle确实好用),asRules()。

asRules(fit)

Rule number: 3 [Kyphosis=present cover=19 (23%) prob=0.58]

Start< 8.5

Rule number: 23 [Kyphosis=present cover=7 (9%) prob=0.57]

Start>=8.5

Start< 14.5

Age>=55

Age< 111

Rule number: 22 [Kyphosis=absent cover=14 (17%) prob=0.14]

Start>=8.5

Start< 14.5

Age>=55

Age>=111

Rule number: 10 [Kyphosis=absent cover=12 (15%) prob=0.00]

Start>=8.5

Start< 14.5

Age< 55

Rule number: 4 [Kyphosis=absent cover=29 (36%) prob=0.00]

Start>=8.5

Start>=14.5

直接解析出好看的规则格式,一目了然,爱不释手。

—————————————

往期精彩:

  • 美国“实体清单”再度升级,我国超级计算机今日起或面临“断供”!

  • 我造的假我自己打,Adobe推出“反PS”

  • 中国诚信全球垫底?讲讲《Science》现在的论文有多不靠谱

利用R语言美化决策树相关推荐

  1. R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然、自定义函数计算模型的分类效能(accuray、F1、偏差Deviance)、使用pander包美化界面输出内容

    R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然.自定义函数计算模型的分类效能(accuray.F1.偏差Deviance).使用pander包美化界面输出内容 ...

  2. 利用R语言对泰坦尼克号沉没事件幸存者的数据分析与预测

    题外话:在文章正式开始之前,我还是想先写一点题外话,一是为了引出写作这篇博客的目的,二则是希望能够记录下现在的所思所想为以后留个纪念.首先介绍一下自己,毕业3年多的小硕一枚,大学期间学的专业是高分子材 ...

  3. R语言CART决策树、随机森林、chaid树预测母婴电商平台用户寿命、流失可视化

    全文链接:http://tecdat.cn/?p=31644 借着二胎政策的开放与家庭消费升级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来发展迅猛(点击文末"阅读原文&q ...

  4. R语言构建决策树(decision trees)模型并进行调优和解释

    R语言构建决策树(decision trees)模型并进行调优和解释 目录 R语言构建决策树(decision trees)

  5. 利用R语言画简单时间序列图

    R 语言无法自动将读取的数据转化为时间序列格式, 所以利用R语言画时间序列图的一个关键步骤就是将读取的数据转变为时间序列格式, 下面是一个简单的程序: # 读取数据, 首先将excel 格式的转化为 ...

  6. 利用R语言对贷款客户作风险评估

    利用R语言对贷款客户作风险评估(上)--数据分析 前言 风险控制能力越来越成为互联网金融行业的隐形门槛,为风控人员提供显著地风险评估依据变得非常重要.本文以银行客户的信用卡信息为案例数据,对数据进行分 ...

  7. 利用R语言对贷款客户作风险评估(下)——零膨胀回归分析

    利用R语言对贷款客户作风险评估(下)--零膨胀回归分析 前言 上一篇的分类预测是决定好坏客户的初步判断, 不足以直接决策, 因此还需要进一步分析. 通过随机森林, 对影响好坏客户的解释变量的重要性进行 ...

  8. 利用R语言irr包计算ICC值(组内相关系数)

    ICC值是一个较为陌生的概念,在统计学中应用较多,引用百度百科的介绍: 组内相关系数(ICC)是衡量和评价观察者间信度(inter-observer reliability)和复测信度(test-re ...

  9. 利用R语言进行线性/非线性回归拟合实例(1)

    利用R语言进行线性/非线性回归拟合实例(1) 1. 生成一组数据 vector<float>xxvec; vector<float>yyvec; ofstreamfout(&q ...

  10. 利用R语言制作好看的Meta分析文献偏倚风险图

    在<Meta踩坑集>里,向大家分享了使用RevMan进行基本的文献偏移风险图是如何制作的.在很多文献里,我们看到的偏倚风险图都长这样: 但也有的文献偏移风险图长这样: 那这些花里胡哨,看起 ...

最新文章

  1. 白话 Session 与 Cookie:从经营杂货店开始
  2. 程序员十大心愿,程序员:你这么了解我的心声的嘛!
  3. python连接sqlserver、怎么跨表查询_python 连接sqlserver,mysql
  4. python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!
  5. VM安装CentOs7虚拟机后无法上网之解决方法
  6. Spring mvc @PathVaribale
  7. 【HDU2825】Wireless Password【AC自动机,状态压缩DP】
  8. 关系运算符 与 逻辑运算符
  9. win10让一个绿色软件开机启动
  10. 报错 ERROR in static/js/vendor.b3f56e9e0cd56988d890.js from UglifyJs
  11. L1-033__040
  12. LINUX下载编译commoncpp/ucommon
  13. C# installshield使用教程
  14. 在精益(Lean)中对定理进行证明(第一章)
  15. 牛客假日团队赛31 A Mowing the Lawn (单调队列维护dp)
  16. Kerberos基础及KDC服务(理论知识)
  17. 计算机有哪些知识,电脑基本操作知识有哪些
  18. Isaac Sim 使用指南(一)
  19. 基于单片机心率监测的LED灯辅助睡眠系统设备-毕业设计
  20. python数据可视化学习

热门文章

  1. Internet Download Manager互联网下载管理器(简称IDM)无广告弹窗,速度起飞,你值得拥有
  2. Spring Boot 异常处理,值得学习!
  3. Mybatis trim 标签的 2 个妙用!
  4. 蛋疼! 注意了,千万不要在 MySQL 中使用 UTF-8
  5. 【重大改革】吴恩达:孩子会识字后立马教她Python!
  6. Linux 下的这些高效指令,是你快速入门运维的神器
  7. 一幅漫画趣味解读 Linux 内核
  8. 华为云TechWave全球技术峰会,看云基础设施全新打开方式
  9. 再也回不去的 GitHub。。。
  10. 【精选】Java高频面试题278道附答案,通关中大型互联网企业工程师必备