1、决策树的构造

createBranch伪代码:

  检测数据集中的每个子项是否属于同一分类:

    IF SO RETURN 类标签

    ELSE

      寻找划分数据集的最好特征

      划分数据集

      创建分支节点

        FOR 每个划分的子集

          调用函数createBranch并增加返回结果到分支节点中

       RETURN 分支节点

划分数据集的大原则:将无序的数据变的更加有序。在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择

熵定义为信息的期望值。熵越大越离散。

计算给定数据集的香农熵

def calcShannonEnt(dataSet):numEntries = len(dataSet)labelCounts = {}for featVec in dataSet: #the the number of unique elements and their occurancecurrentLabel = featVec[-1]if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0labelCounts[currentLabel] += 1shannonEnt = 0.0for key in labelCounts:prob = float(labelCounts[key])/numEntriesshannonEnt -= prob * log(prob,2) #log base 2return shannonEnt

2.决策树的构造算法

  ID3算法

ID3算法是一种分类决策树算法。他通过一系列的规则,将数据最后分类成决策树的形式。分类的根据是用到了熵这个概念。熵在物理这门学科中就已经出现过,表示是一个物质的稳定度,在这里就是分类的纯度的一个概念。公式为:

  C4.5算法

C4.5与ID3在核心的算法是一样的,但是有一点所采用的办法是不同的,C4.5采用了信息增益率作为划分的根据,克服了ID3算法中采用信息增益划分导致属性选择偏向取值多的属性。信息增益率的公式为:

分母的位置是分裂因子,他的计算公式为:

  CART算法

CART算法对于属性的值采用的是基于Gini系数值的方式做比较,gini某个属性的某次值的划分的gini指数的值为:

,pk就是分别为正负实例的概率,gini系数越小说明分类纯度越高

转载于:https://www.cnblogs.com/davidwang456/p/9752979.html

机器学习实战读书笔记--决策树相关推荐

  1. 机器学习实战---读书笔记: 第11章 使用Apriori算法进行关联分析---2---从频繁项集中挖掘关联规则

    #!/usr/bin/env python # encoding: utf-8''' <<机器学习实战>> 读书笔记 第11章 使用Apriori算法进行关联分析---从频繁项 ...

  2. 机器学习实战读书笔记(2)决策树

    信息熵是什么? 1. 信息论之父 C. E. Shannon 在 1948 年发表的论文"通信的数学理论( A Mathematical Theory of Communication )& ...

  3. 机器学习实战读书笔记(1)

    机器学习的主要任务: 分类:将实例数据划分到合适的分类中 回归:主要用于预测数值型数据 分类和回归属于监督学习,监督学习必须知道预测什么,即目标变量的分类信息 无监督学习:数据没有类别信息,也不会给定 ...

  4. 机器学习实战读书笔记--朴素贝叶斯

    1.朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法, 最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model, ...

  5. 机器学习实战读书笔记(一)机器学习基础

    http://sourceforge.net/projects/numpy/files/ 下载对应版本的numpy,到处下不到,找到一个没python2.7 用pip吧, pip install nu ...

  6. 机器学习实战读书笔记--logistic回归

    1. 利用logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类. 2.sigmoid函数的分类 Sigmoid函数公式定义 3.梯度上升法 基本思想:要找个某个 ...

  7. 机器学习实战读书笔记--k邻近算法KNN

    k邻近算法的伪代码: 对未知类别属性的数据集中的每个点一次执行以下操作: (1)计算已知类别数据集中的点与当前点之间的距离: (2)按照距离递增次序排列 (3)选取与当前点距离最小的k个点 (4)确定 ...

  8. 机器学习实战读书笔记(3)朴素贝叶斯

    贝叶斯定理 要理解贝叶斯推断,必须先理解贝叶斯定理.后者实际上就是计算"条件概率"的公式. 所谓"条件概率"(Conditional probability), ...

  9. 机器学习实战 - 读书笔记(04) - 朴素贝叶斯

    核心公式 - 贝叶斯准则 \[p(c|x) = \frac{p(x|c)p(c)}{p(x)}\] p(c|x) 是在x发生的情况下,c发生的概率. p(x|c) 是在c发生的情况下,x发生的概率. ...

最新文章

  1. 【转】通过Hibernate将数据 存入oracle数据库例子
  2. centos执行-查看,复制,删除-命令的脚本
  3. java接口注入对象的意义_Java Web系列:Spring依赖注入基础
  4. 一个实现生产和消费的例子(并且使用了接口和反射技术,动态调用方法)小框架...
  5. Java Adapter Pattern(适配器模式)
  6. 线程重命名java_线程重命名(Netty)和设计模式Decorator
  7. Day04 dom详解及js事件
  8. js 里不能使用${pageContext.request.contextPath}解决方案
  9. LSTM反向传播公式推导
  10. 用where in遇到null时的解决方法1
  11. 企业如何制作自己的公司网站?
  12. 硬件:详细讲解台式电脑上的常用的几个接口!
  13. 请输入星期几的第一个字母来判断一下是星期几
  14. PSD文件解析接口项目
  15. Ubuntu 16.04LTS安装后需要做的事
  16. 相似对角化的意义(转载)
  17. APM应用性能管理工具Pinpoint测评
  18. 机顶盒boot分区读写
  19. 新浪短信WEBSERVICE--本文转载
  20. 《港囧》徐峥:不会互联网思维的导演不是好产品经理

热门文章

  1. MySQL数据库az排序_RDS Mysql Single-AZ和Multi-AZ性能差异
  2. spring boot第六讲
  3. 图片渲染延迟_前向渲染与延迟渲染
  4. 服务器安装系统时无法创建新的分区,重装系统出现“我们无法创建新的分区,也找不到现有的分区”...
  5. mysql分库分表事务控制_数据库分库分表之后,你是如何解决事务问题?
  6. kotlin内联函数let、with、run、apply、also
  7. bash 判断 os 版本_鸿蒙OS手机将至,华为手机用户提问,老款机器能升级吗?
  8. 计算机视觉编程——多视图几何
  9. 字典的最大深度 python 实现
  10. pyspark dataframe基本用法