案例来自Ross Quinlan的书籍《C4.5:programs for machine learning》
数据集如下

为了模仿缺失值的情况,现在把上面?处的地方改为缺失值。
那么根据现有13条明确的数据集(不再是14条)
此时
?=sunny的概率是:513\frac{5}{13}135​
?=overcast的概率是:313\frac{3}{13}133​
?=rain的概率是:513\frac{5}{13}135​


书中的决策树如下

上面这个结果是根据下面的源代码跑出来的。
http://www.rulequest.com/Personal/c4.5r8.tar.gz
对应的决策树结果是:

绘制上图对应的代码是:
test.dot

digraph graphname {  "Outlook"->"Humidity"[label="sunny", fontcolor=darkgreen] // edge T->P  "Humidity"->"Play (2.0|0.0)"[label="≤75", fontcolor=darkgreen]"Humidity"->"Don't Play (3.4|0.4)"[label=">75", fontcolor=darkgreen]"Outlook"->"Play (3.2|0.0)"[label="overcast", fontcolor=darkgreen]"Outlook"->"Windy"[label="rain", fontcolor=darkgreen]"Windy"->"Don't Play (2.4|0.4)"[label="true", fontcolor=darkgreen]"Windy"->"Play (3.0|0.0)"[label="false", fontcolor=darkgreen]}

运行方法

dot -Tpng -o       decision.png ./test.dot

对于上面的小数解释如下:


当?=sunny:
该条缺失数据满足
Outlook=sunny
Humidity>75
也就是说到达了Don’t Play这个叶子节点,但是该数据是属于Play这个类别的
所以加上原来的3条数据,总共是35133\frac{5}{13}3135​条数据,由于类别与该类别不一致,所以该叶子节点的误判条数为513\frac{5}{13}135​条
所以该叶子节点的最终结果是:(35133\frac{5}{13}3135​|513\frac{5}{13}135​)=(3.4|0.4)
表示到达该叶子节点的有35133\frac{5}{13}3135​条,其中不满足的有513\frac{5}{13}135​条


当?=overcast:由于13条数据中有3条数据是overcast,所以概率是313\frac{3}{13}133​
由于满足Outlook=overcast的数据全部属于Play,而该缺失数据也属于Play,
所以不存在误判
该叶子节点最终到达数据共计33133\frac{3}{13}3133​条,误判0.0条
所以该叶子节点的最终结果是:(33133\frac{3}{13}3133​|0.0)=(3.2|0)

C4.5-Release8中Ross Quinlan对缺失值的处理相关推荐

  1. R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数、使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式)

    R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数.使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式) 目录

  2. python处理csv中的缺失值_Python中重复值、缺失值、空格值处理

    1.重复值处理 把数据结构中,行相同的数据只保留一行. 函数语法: drop_duplicates() 删除重复值newdf=df.drop_duplicates()from pandas impor ...

  3. Python处理数据中的空值(缺失值)时用到的dropna()函数和fillna()函数总结,通过示例弄懂这两个函数的用法。

    引言:在用python处理数据时,我们通常会遇到数据不完整的情况,比如有空值的时候,我们想要删除控制所在的行或列,或者是我们给空值设置为某一个值.这时候就可以用dropna和fillna两个函数来实现 ...

  4. History of pruning algorithm development and python implementation(finished)

    All the python-implementation for 7 post-pruning Algorithms are here. Table of Decision Trees: name ...

  5. 数据挖掘十大算法之—C4.5

    http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是 ...

  6. 决策树之C4.5(详细版终结版)

    转自:http://www.aiuxian.com/article/p-2509877.html 1. C4.5算法简介 C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习: ...

  7. 数据挖掘十大算法之C4.5

    转载自:http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它 ...

  8. 决策树(二)--C4.5

    C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类.C4.5的目标是通过学习, ...

  9. 数据挖掘中的十个著名算法

    2006年的ICDM(the IEEE International Conference on Data Mining) 上,评选出了数据挖掘领域的十大算法,分别是 1,C4.5 C4.5是一系列用在 ...

最新文章

  1. 【Codeforces】Round #375 (Div. 2)
  2. 字符编码的知识(二)
  3. 嵌入式开发之网络心跳包---阻塞和非阻塞以及是否有必要心跳包heartbeat
  4. Taro+react开发(93):判断是否是H5端
  5. Linux学习之后台运行进程
  6. 搞AI的产品经理该怎么写PRD?谷歌的导师教你
  7. 这群程序员工作日竟然不用上班?
  8. 93岁计算机密码发明人去世:创建全球首个分时系统,成为计算机普及开端
  9. 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq
  10. vscode自定义代码片段
  11. 软件项目管理案例分析
  12. python可以下载百度文库_Python在线百度文库爬虫(免下载券)
  13. 2012年8月21日
  14. roce流量抓包 linux,roce性能测试方法
  15. revit 二次开发之创建图纸和放置视图
  16. vc常见问题108问-很有资料价值
  17. 修改Apache服务器的默认首页
  18. 【C51】基于C51单片机的定时闹钟(含代码,电路,拿走即可用)
  19. 引脚密集的QFP封装的焊接
  20. 某款PC Camera试玩儿

热门文章

  1. 正则在php中的使用
  2. 1069: [SCOI2007]最大土地面积 - BZOJ
  3. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....
  4. linux共享库的运行方式,Linux下动态共享库加载及使用详解
  5. comsol如何设置距离梯度_使用 COMSOL 软件求解经典 CFD 基准问题:顶盖驱动空腔...
  6. 为什么要用nodejs做中间层
  7. mysql创建用户报错ERROR 1290
  8. 几个方便编程的C++特性
  9. 一个openMP编程处理图像的示例
  10. 在MFC中使用Cstring