决策树是应用最广的归纳推理算法之一,它是一种逼近离散函数值的方法,通过学习析取表达式,找到针对目标的学习规则。该方法学习得到的函数被表示为一棵决策树,并且对噪声数据有很好的稳健性。在R中,有多个包可以进行决策树建模分析,其中rpart包可进行决策树模型的建立,针对获得的决策树可以使用visNetwork包进行可交互图像可视化。

针对决策树建模及可视化的示例,下面使用R在自带有的电路板印刷数据集solder,导入数据及相关包的程序如下所示:

library(rpart);library(visNetwork);library(ggpol);library(ggplot2)## 导入电路板印刷数据data("solder")head(solder)##   Opening Solder Mask PadType Panel skips## 1       L  Thick A1.5      W4     1     0## 2       L  Thick A1.5      W4     2     0## 3       L  Thick A1.5      W4     3     0## 4       L  Thick A1.5      D4     1     0## 5       L  Thick A1.5      D4     2     0## 6       L  Thick A1.5      D4     3     0## 构建决策树模型set.seed(123)model ## 通过可视化参数复杂性图像进行参数选择plotcp(model)

在上面的程序中从导入的数据可发现,数据有6个特征,然后使用Opening作为类别标签建立决策树模型,针对获得的决策树模型,可以利用plotcp()函数将模型的复杂性参数进行可视化,运行程序后可获得如图1所示的图像。

图1 决策树复杂性分析

图1中每一个深度的决策树(图的上横坐标)都对应着一个复杂性程度的阈值(图的横坐标),而且每个cp取值会对一个相对误差(图的纵坐标),所以可以通过设置参数cp的取值对决策树模型进行剪枝优化。根据图中曲线的变化情况,可发现当cp取值为0.019时,模型的相对误差最低,所以可以根据该参数的取值训练新的决策树分类器,程序如下所示:

model                ## 设置控制树模型深度的参数               control = rpart.control(cp = 0.019))visTree(model,main = "决策树模型",height = "400px",        colorY = c("red","blue","green"))

上面的程序不仅获得了更好的决策树模型,还使用visTree()函数将获得的决策树进行了可视化,运行程序后可获得如图2所示的可交互图像。该图像可以通过点击查看决策的更详细的信息。

图2 可交互决策树图

针对获得的决策树模型,可以使用条形图可视化出每个变量在模型中的重要性,程序如下所示:

## 可视化每个变量的重要性varimp varimpdf                        impor = varimp)ggplot(varimpdf,aes(x = reorder(var,-impor), y = impor))+  geom_col(colour = "lightblue",fill = "lightblue")+  labs(x = "变量", y = "重要性")

运行上面的程序可获得如图3所示的图像。从结果中可发现对决策树模型最重要的变量为skips变量。

图3 决策树模型变量重要性

针对决策树分类模型,可以将模型对数据集的预测结果和真实的类别进行对比,分析模型的预测精度。针对分类的精度,可以使用ggpol包中的函数geom_confmat()可视化混淆矩阵,运行下面的程序后可获得如图4所示的图像。针对该混淆矩阵热力图,可以更清楚的分析模型预测结果和真实类别标签之间的差异。例如针对L和S类的样本预测精度均较高,而针对M类的样本预测精度很低。

## 使用模型对训练集进行预测pre ## 可视化预测的混淆矩阵ggplot() + geom_confmat(aes(x = solder$Opening, y = pre),                        normalize = TRUE, text.perc = TRUE)+  labs(x = "Reference",y = "Prediction")+  scale_fill_gradient2(low="darkblue", high="lightgreen")

图4决策树模型混淆矩阵可视化

关注我们:

QQ群:837977579

多分类决策树 r语言_R语言——决策树模型的相关可视化相关推荐

  1. R语言广义加性模型GAMs:可视化每个变量的样条函数、样条函数与变量与目标变量之间的平滑曲线比较、并进行多变量的归一化比较、测试广义线性加性模型GAMs在测试集上的表现(防止过拟合)

    R语言广义加性模型GAMs:可视化每个变量的样条函数.样条函数与变量与目标变量之间的平滑曲线比较.并进行多变量的归一化比较.测试广义线性加性模型GAMs在测试集上的表现(防止过拟合) 目录

  2. CSDN ARIMA R语言_R语言时间序列:ARIMA / GARCH模型的交易策略在外汇市场预测应用...

    原文链接: http://tecdat.cn/?p=17622​tecdat.cn 最近,我们继续对时间序列建模进行探索,研究时间序列模型的自回归和条件异方差族.我们想了解自回归移动平均值(ARIMA ...

  3. r语言 分类变量 虚拟变量_R语言中的变量

    r语言 分类变量 虚拟变量 R语言| 变数 (R Language | Variables) In the previous tutorial, we have come across the bas ...

  4. clustMD r语言_R语言-聚类与分类

    一.聚类: 一般步骤: 1.选择合适的变量 2.缩放数据 3.寻找异常点 4.计算距离 5.选择聚类算法 6.采用一种或多种聚类方法 7.确定类的数目 8.获得最终聚类的解决方案 9.结果可视化 10 ...

  5. CSDN ARIMA R语言_R语言实现Fleiss#39; Kappa系数处理多个观察者一致性检验

    Fleiss' kappa系数.该检验适用于分析重复测量3次及以上且测量结果是无序分类变量的重测一致性或观察者一致性检验.SPSS没有内置操作模块,但可以通过拓展包输出结果.Fleiss' kappa ...

  6. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析

    R语言有很多包可以做机器学习(Machine Learning)的任务.机器学习的任务主要有有监督的学习方式和无监督的学习方式. 有监督学习:在正确结果指导下的学习方式,若是正确结果是定性的,属于分类 ...

  7. 格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验

    之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:①R语言单组汇总及图形展示.R语言系列第三期:②R语言多组汇总及图形展示.R语言系列第三期:③R语言表格及其图形展示 从这个部分我们就 ...

  8. fig r函数_R语言基础绘图函数散点图~跟着Nature Communications学画图~Figure1

    今天继续 跟着Nature Communications学画图系列第二篇.学习R语言基础绘图函数画散点图. 对应的 Nature Communications 的论文是 Fecal pollution ...

  9. 包r语言_R语言代码共享:制作R包

    作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...

  10. dataframe第二列 r语言_R语言-数据框

    1. 数据框的建立 数据框是R语言中一种重要的数据结构.数据框类似于矩阵,有行和列两个维度.数据框和矩阵不同的是,数据框的每一列可以是不同的模式.例如,有些列是数字组成,有些列是字符串组成.数据框通过 ...

最新文章

  1. 自动驾驶汽车视觉- 图像特征提取与匹配技术
  2. 2016年金融全行业网络安全状况调研报告
  3. bat产品经理能力模型_产品经理如何构建自己的产品能力模型?
  4. 创建provider服务
  5. android activity动态显示不出来,uiautomatorviewer 获取不到动态页面解决办法
  6. 除去WebView默认存在的一定像素的边距问题
  7. ubuntu指向python3_ubuntu安装python3.7,并更新python默认指向为python3.7
  8. 奔跑中的2015--成长之路
  9. sicktim571操作手册_TIM中文操作手册.PDF
  10. 卷积神经网络CNN基本原理和相关基本概念
  11. 常用EXE文件反编译工具
  12. rfc3315_DHCPv6-RFC3315(中文).pdf
  13. 【word】双栏写作如何调整为写满左栏再写右栏
  14. CVPR 2022 Oral | MLP进军底层视觉!谷歌提出MAXIM:刷榜多个图像处理任务,代码已开源!...
  15. 基于Arduino的烟雾传感实验
  16. acm中的一些博弈论知识
  17. 【前端开发】开启鸿蒙系统2.0(华为mate手机)的安卓调试 - 开发者选项 - USB调试
  18. matlab在线性代数中的应用开题报告,矩阵应用开题报告.doc
  19. 用ANT执行Jmeter脚本时提示jtl文件不存在
  20. ESXI如何封装网卡驱动

热门文章

  1. 是谁让网管员的薪水如此低廉?
  2. 8.SOA架构:服务和微服务分析及设计--- Web服务及REST服务的服务API与契约版本控制
  3. 3.数据结构 --- 栈和队列
  4. 14.docker volumn
  5. 52. yii create webapp
  6. 110. PHP 读取 ini ,ftp 上传
  7. 46. Element isEqualNode() 方法
  8. 13. JavaScript 字符串(String)对象
  9. 关于一些信息学数论问题例题的讨论
  10. python - zipfile模块