构造决策树,面对一个数据集,首先找到具有决定性作用的特征,对每个特征进行评估,然后根据特征划分数据集。
如果分支下的数据属于同一类型,即停止,不属于同一类型,重复划分数据子集。
采用量化的方法判断如何划分数据
在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。

from math import log#math模块中的对数函数def calcShannonEnt(dataSet):numEntries = len(dataSet)labelCounts = {}#计算数据集中数据的个数,这里是5个for featVec in dataSet:#通过循环,featVec=[1,1,'yes']currentLabel = featVec[-1]#取出这一行的最后一个数,yes or noif currentLabel not in labelCounts.keys():labelCounts[currentLabel] = 0labelCounts[currentLabel] += 1#yes为2 no为3shannonEnt = 0.0for key in labelCounts:prob = float(labelCounts[key])/numEntriesshannonEnt -= prob * log(prob,2)return shannonEnt#计算香农熵def createDataSet():dataSet = [[1,1,'yes'],[1,1,'yes'],[1,0,'no'],[0,1,'no'],[0,1,'no']]labels = ['no surfacing','flippers']return dataSet,labels

主要是计算鱼类和非鱼类的香农熵

>>> import trees
>>> from imp import reload
>>> reload(trees)
<module 'trees' from 'E:/Python\\trees.py'>
>>> myDat,labels=trees.createDataSet()
>>> myDat
[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
>>> trees.calcShannonEnt(myDat)
0.9709505944546686
>>> myDat[0][-1]='maybe'
>>> myDat
[[1, 1, 'maybe'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
>>> trees.calcShannonEnt(myDat)
1.3709505944546687
>>> 

计算给定数据集的香农熵相关推荐

  1. 机器学习实战(代码部分)-- 决策树(Ⅰ 计算给定数据的香农熵)

    3-1 计算给定数据的香农熵 1. 算法思想 (1)计算出总共有多少组数据(返回数据行数). (2)初始化分类字典和香农熵,其中分类字典初始化为空,香农熵初始化为0. (3)计算所有数据的类别(假定为 ...

  2. 机器学习实战2.1--决策树之求数据集的香农熵

    1.什么是香农熵? 集合信息的度量方式称为香农熵或者简称为熵. 熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义.如果待分类的事务可能划分在多个分类之中,则符号的信息定义为: 其中是选 ...

  3. Python三种方法计算皮尔逊相关系数以及实现给定数据集,返回数据集中每个特征和标签的相关系数

    特征预处理完之后,我们需要选择有意义的特征作为输入机器学习的算法和模型进行训练 在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数( ...

  4. 通过statCounter计算给定的RDD[Double]的统计信息的方法

    需求1:给定一个RDD[Double],进行计算,该RDD的统计信息(count,mean,stdev,max,min) 代码: def main(args: Array[String]): Unit ...

  5. Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例

    Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录

  6. python求13号是星期几的次数_Python简单计算给定某一年的某一天是星期几示例

    本文实例讲述了Python简单计算给定某一年的某一天是星期几.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #计算某特定天使星期几 #蔡勒公式:w=y+[y/4]+[ ...

  7. python星期计算_Python简单计算给定某一年的某一天是星期几示例

    本文实例讲述了Python简单计算给定某一年的某一天是星期几.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #计算某特定天使星期几 #蔡勒公式:w=y+[y/4]+[ ...

  8. python算闰年和平年的天数_Python自定义函数计算给定日期是该年第几天的方法示例...

    本文实例讲述了Python自定义函数计算给定日期是该年第几天的方法.分享给大家供大家参考,具体如下: 写一个函数,计算给定日期是该年的第几天. 满足闰年的条件: 闰年是公历中的名词,能被4整除但不能被 ...

  9. 用C语言用指针怎么算通用定积分,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的 ...

最新文章

  1. python可以从事什么工作-学Python能干什么工作?工作前景怎么样?
  2. table切换数据 vue_Vue 知识整合贴 ( 超干货,适合收藏)
  3. 随机信号的傅里叶分析
  4. SCAU 算法课的题
  5. 优化 Tengine HTTPS 握手时间
  6. View DrawingCache的理解
  7. 2018年全国多校算法寒假训练营练习比赛(第一场)D. N阶汉诺塔变形(找规律)
  8. 《Linux内核分析》第三周笔记 构造一个简单的Linux系统MenuOS
  9. QQ一键加群android代码,PC和移动端一键添加和打开QQ群代码分析
  10. 我在b站上大学:计算机类优秀网课汇总【持续更新】
  11. Node.js中zlib模块的压缩/解压详解
  12. python聚类分析实例_Biopython - 聚类分析
  13. [HYSYS学习]逻辑单元-循环器
  14. 马克思主义哲学与计算机专业的关系,以科学技术哲学来分析与自然辨证法的统一关系...
  15. 决策树算法python源代码_决的意思
  16. Mac+virtualbox安装win7
  17. 原生JS活动倒计时实现思路
  18. STM32F4驱动LTC2664-16驱动程序
  19. 哪些行业适合开发小程序商城
  20. Linux 网络唤醒

热门文章

  1. java 64位win7不运行_我的世界点击启动没反应!我家是win764位,安装64位java,就是起动不了!...
  2. GitHub 著名开源项目作者删库跑路,神秘 Bug 影响超 20000 个项目!
  3. 5个非常有用的php扩展
  4. SecureCRT生成SSH密钥
  5. 2006—2020年国家信息化发展战略
  6. python 可视化图表 联动_Vue2+Echarts实现多种图表数据可视化Dashboard详解(附源码)...
  7. 计算机魅力沈阳一日游教案,魅力辽宁教案六年.doc
  8. SAP ERP系统总帐概念
  9. 2022-5-5 Leetcode 513.找树左下角的值
  10. 华为30 岁以下员工占比 28%;SpaceX:欢迎“攻击”星链;高德地图宣布正式上线“红绿灯倒计时”功能 | EA周报...