前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R可视乎|决策树结果可视化

R可视乎|决策树结果可视化

作者头像
庄闪闪
发布2021-04-09 11:31:00
2.7K0
发布2021-04-09 11:31:00
举报

简介

决策树是一种非常有用的分类方法,它能够对新出现的对象给出正确的分类。比起文本描述的规则,我们更希望能使用图形来直观展示决策树的结果,这就是本文介绍的重点——决策树结果可视化。

方法一

使用基础包绘图函数plot()

  • 优点:适用于各种模型,如raprt模型、C5.0模型等
  • 缺点:图形复杂,规则显示不明确

这里使用我自己通过问卷调查获得的一份hospital数据,做一个简单示范。大家可以将自己的数据进行导入(如何导入?可见推文:R数据科学|第八章内容介绍),替换hospital数据。

使用C5.0()进行决策树模型的构建,因变量需要转化为因子类型,并将结果保存到hospital_model变量中,之后用plot()进行可视化。plot()中包含许多调整图形的参数,详细内容可以参考庄闪闪编写的R语言可视化手册,这里不做过多解释。

代码语言:javascript
复制
hospital_model <- C5.0(hospital_train[,-9],as.factor(hospital_train$use))
plot(hospital_model)

从这副图片可以发现,用plot进行决策树可视化效果不是很好,可以说很丑陋了!因此更推荐后面两种方法。

方法二

使用rpart.plot包绘图函数rpart.plot()

  • 优点:图形美观,规则显示清晰明了
  • 缺点:只适用于rpart模型

rpart.plot()函数的内部参数结构如下:

代码语言:javascript
复制
rpart.plot(x = stop("no 'x' arg"),
    type = 2, extra = "auto",
    under = FALSE, fallen.leaves = TRUE,
    digits = 2, varlen = 0, faclen = 0, roundint = TRUE,
    cex = NULL, tweak = 1,
    clip.facs = FALSE, clip.right.labs = TRUE,
    snip = FALSE,
    box.palette = "auto", shadow.col = 0,
    ...)

内部参数过多,就不做详细解释。如果对这部分内容感兴趣可以通过帮助文档进行查询(?rpart.plot)

以hospital数据为例,使用rpart()进行决策树模型的构建,并将结果保存到model变量中,在这个模型中,~左端是因变量,~右端的"."表示将除了use以外的所有变量作为自变量,你可以根据数据来调整自己的模型结构。之后用rpart.plot()进行可视化。

代码语言:javascript
复制
library(rpart.plot)
model <- rpart(hospital$use~.,data = hospital)
rpart.plot(model)

如何你想改变决策树的样式,可以通过调整type参数来实现。

代码语言:javascript
复制
rpart.plot(model,type = 0)

如何你想改变各结点的颜色,可以通过调整box.palette参数来实现。若只添加一种颜色,则全部结点颜色相同。

代码语言:javascript
复制
rpart.plot(model,type = 0,box.palette = "yellow")

如果想要区分不同的结点,可以为box.palette设置多种颜色。

代码语言:javascript
复制
rpart.plot(model,type = 2,box.palette = c("pink", "gray"))

方法三

使用rattle包绘图函数fancyRpartPlot()

  • 优点:图形更加精美,操作简单
  • 缺点:只适用于rpart模型,需要加载的包比较多

fancyRpartPlot()函数的内部参数结构如下:

代码语言:javascript
复制
fancyRpartPlot(model, main="", sub, caption, palettes, type=2, ...)

各参数含义如下表:

参数

作用

model

一个rpart对象

main

图形标题

sub

副标题。默认值是一个包含日期、时间和用户名的字符串。

captions

图形右下角的说明

palettes

颜色调整

types

图形样式

以方法二中的model为例,使用fancyRpartPlot()进行结果可视化。

代码语言:javascript
复制
library(rpart)
library(tibble)
library(bitops)
library(rattle)
library(rpart.plot)
library(RColorBrewer)
model <- rpart(hospital$use~.,data = hospital)
fancyRpartPlot(model)

如果想要调整各结点的颜色,可以通过调整palette参数来实现,其用法与方法二中的box.palette相同。

代码语言:javascript
复制
fancyRpartPlot(model,palettes=c("Greys", "Blues"))

如果你想手动调整图片内部的细节,你可以参考这篇推文:AI不会,没关系,R可以导出PPT格式的图形啦,导入到ppt内然后修改图片内部元素。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 方法一
  • 方法二
  • 方法三
相关产品与服务
腾讯问卷
腾讯问卷是专业的在线问卷调查平台,支撑了腾讯核心业务的⽤户、市场、产品研究工作。平台提供基于数据收集的专业调查研究解决方案,覆盖问卷调查、信息上报、在线测评、在线考试、360度评估、投票打卡等工作场景,致力于为客户提供高效的洞察决策工具。同时平台还拥有超百万级的真实样本用户,可以提供高效、精准的问卷有偿投放服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档