利用R语言美化决策树

作者 | 二缺叶枫

来源 | 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)


640?wx_fmt=png

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

调用rpart.plot包进行绘图。

library(rpart.plot)

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

640?wx_fmt=png

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

library(rattle)

fancyRpartPlot(fit)

640?wx_fmt=png

总的来说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

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


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

往期精彩:

640?wx_fmt=png

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值