《机器学习实战》决策树(ID3算法)的分析与实现
来源:互联网 发布:ubuntu 桌面程序开发 编辑:程序博客网 时间:2024/05/17 03:59
============================================================================================
《机器学习实战》系列博客是博主阅读《机器学习实战》这本书的笔记,包含对其中算法的理解和算法的Python代码实现
另外博主这里有机器学习实战这本书的所有算法源代码和算法所用到的源文件,有需要的留言
============================================================================================
KNN算法请参考:http://blog.csdn.net/gamer_gyt/article/details/47418223
一、简介
决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测
二、基本思想
1)树以代表训练样本的单个结点开始。
2)如果样本都在同一个类.则该结点成为树叶,并用该类标记。
3)否则,算法选择最有分类能力的属性作为决策树的当前结点.
4)根据当前决策结点属性取值的不同,将训练样本数据集tlI分为若干子集,每个取值形成一个分枝,有几个取值形成几个分枝。匀针对上一步得到的一个子集,重复进行先前 步骤,递4'I形成每个划分样本上的决策树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代考虑它。
5)递归划分步骤仅当下列条件之一成立时停止:
①给定结点的所有样本属于同一类。
②没有剩余属性可以用来进一步划分样本.在这种情况下.使用多数表决,将给定的结点转换成树叶,并以样本中元组个数最多的类别作为类别标记,同时也可以存放该结点样本的类别分布,
③如果某一分枝tc,没有满足该分支中已有分类的样本,则以样本的多数类创建一个树叶。
三、构造方法 决策树构造的输入是一组带有类别标记的例子,构造的结果是一棵二叉树或多叉树。二叉树的内部节点(非叶子节点)一般表示为一个逻辑判断,如形式为a=aj的逻辑判断,其中a是属性,aj是该属性的所有取值:树的边是逻辑判断的分支结果。多叉树(ID3)的内部结点是属性,边是该属性的所有取值,有几个属性值就有几条边。树的叶子节点都是类别标记。
由于数据表示不当、有噪声或者由于决策树生成时产生重复的子树等原因,都会造成产生的决策树过大。因此,简化决策树是一个不可缺少的环节。寻找一棵最优决策树,主要应解决以下3个最优化问题:①生成最少数目的叶子节点;②生成的每个叶子节点的深度最小;③生成的决策树叶子节点最少且每个叶子节点的深度最小。
四、Python代码实现调用:命令行进入该代码所在目录执行:import trees dataSet,labels = trees.createDataSet() trees.myTree()
0 0
- 《机器学习实战》决策树(ID3算法)的分析与实现
- 《机器学习实战》之ID3决策树算法
- 机器学习实战之决策树ID3算法
- 机器学习之决策树(ID3)算法与Python实现
- 【机器学习】决策树-ID3算法的Python实现
- 机器学习算法的Python实现 (2):ID3决策树
- 机器学习(三)决策树算法ID3的实现
- 《机器学习实战》ID3-决策树
- 机器学习实战 (2)决策树 (二) 决策树ID3算法的优缺点
- 机器学习实战学习笔记(二)分类—ID3决策树算法(python3实现)
- 机器学习算法-决策树ID3
- 机器学习--决策树(ID3)算法
- 机器学习-决策树 ID3算法
- 机器学习实战 (2)决策树 (一) ID3算法
- 机器学习实战之 决策树——ID3算法
- 机器学习实战—ch03 .决策树(ID3算法)
- 机器学习实战【2】(决策树ID3算法)
- 机器学习实战之决策树(1)---ID3算法与信息熵,基尼不纯度
- 【I/O模型】几种IO模型浅析(一)
- java多线程(二)锁对象
- OC继承详解与使用规则
- 新的开始,第一次_博客.
- hdu5389
- 《机器学习实战》决策树(ID3算法)的分析与实现
- 【leetcode每日一题】NO160.Intersection of Two Linked Lists
- Android开发使用Viewpager实现程序引导界面
- Leetcode#42||Trapping Rain Water
- vim 中文显示乱码问题解决
- leetcode 125: Valid Palindrome
- OC多态详解
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第三节:3D摄像机
- 二叉树 (Binary Tree)的遍历