C4.5-Release8中Ross Quinlan对缺失值的处理
案例来自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对缺失值的处理相关推荐
- R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数、使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式)
R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数.使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式) 目录
- python处理csv中的缺失值_Python中重复值、缺失值、空格值处理
1.重复值处理 把数据结构中,行相同的数据只保留一行. 函数语法: drop_duplicates() 删除重复值newdf=df.drop_duplicates()from pandas impor ...
- Python处理数据中的空值(缺失值)时用到的dropna()函数和fillna()函数总结,通过示例弄懂这两个函数的用法。
引言:在用python处理数据时,我们通常会遇到数据不完整的情况,比如有空值的时候,我们想要删除控制所在的行或列,或者是我们给空值设置为某一个值.这时候就可以用dropna和fillna两个函数来实现 ...
- 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 ...
- 数据挖掘十大算法之—C4.5
http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是 ...
- 决策树之C4.5(详细版终结版)
转自:http://www.aiuxian.com/article/p-2509877.html 1. C4.5算法简介 C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习: ...
- 数据挖掘十大算法之C4.5
转载自:http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它 ...
- 决策树(二)--C4.5
C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类.C4.5的目标是通过学习, ...
- 数据挖掘中的十个著名算法
2006年的ICDM(the IEEE International Conference on Data Mining) 上,评选出了数据挖掘领域的十大算法,分别是 1,C4.5 C4.5是一系列用在 ...
最新文章
- 【Codeforces】Round #375 (Div. 2)
- 字符编码的知识(二)
- 嵌入式开发之网络心跳包---阻塞和非阻塞以及是否有必要心跳包heartbeat
- Taro+react开发(93):判断是否是H5端
- Linux学习之后台运行进程
- 搞AI的产品经理该怎么写PRD?谷歌的导师教你
- 这群程序员工作日竟然不用上班?
- 93岁计算机密码发明人去世:创建全球首个分时系统,成为计算机普及开端
- 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq
- vscode自定义代码片段
- 软件项目管理案例分析
- python可以下载百度文库_Python在线百度文库爬虫(免下载券)
- 2012年8月21日
- roce流量抓包 linux,roce性能测试方法
- revit 二次开发之创建图纸和放置视图
- vc常见问题108问-很有资料价值
- 修改Apache服务器的默认首页
- 【C51】基于C51单片机的定时闹钟(含代码,电路,拿走即可用)
- 引脚密集的QFP封装的焊接
- 某款PC Camera试玩儿
热门文章
- 正则在php中的使用
- 1069: [SCOI2007]最大土地面积 - BZOJ
- java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....
- linux共享库的运行方式,Linux下动态共享库加载及使用详解
- comsol如何设置距离梯度_使用 COMSOL 软件求解经典 CFD 基准问题:顶盖驱动空腔...
- 为什么要用nodejs做中间层
- mysql创建用户报错ERROR 1290
- 几个方便编程的C++特性
- 一个openMP编程处理图像的示例
- 在MFC中使用Cstring