3_1决策树(Decision_Tree_ID3)——calcShannonEnt_3_1
来源:互联网 发布:淘宝erp系统 编辑:程序博客网 时间:2024/06/04 19:17
声明:《机器学习实战》代码详细注释和重构,以及相关的函数、模块和算法的解释;本文为博主原创文章,未经博主允许不得转载。
计算给定数据集的香农熵(程序清单3-1)
*#代码:Peter Gong_shuai
*#中文注释:Gong_shuai
*#代码重构:Gong_shuai
*#函数注解:Gong_shuai
*#相关的函数、模块和算法的解释:Gong_shuai
*#环境:Python2.7、Sublime Text3、mac代码
#coding=utf-8#计算给定数据集的香农熵(程序清单3-1)#源代码:Peter Gong_shuai#中文注释:Gong_shuai#代码重构:Gong_shuai#函数注解:Gong_shuai#环境:python2.7from numpy import *import operatorfrom os import listdirfrom math import logdef createDataSet(): #简单鉴定数据集 dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']] labels = ['no surfacing','flippers'] #change to discrete values return dataSet, labelsdef calcShannonEnt(dataSet): #计算给定数据集的香农熵 numEntries = len(dataSet) #计算数据集中的实例总数 labelCounts = {} #创建数据字典,其键值是最后一列的数值 for featVec in dataSet: #the the number of unique elements and their occurance。 currentLabel = featVec[-1] if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0 #如果当前键值不存在,则扩展字典并将当前键值加入字典, labelCounts[currentLabel] += 1 #每一个键值都记录了当前类别的次数 #使用所有类标签发生的频率计算类别出现的概率,计算香农熵 shannonEnt = 0.0 for key in labelCounts: prob = float(labelCounts[key])/numEntries shannonEnt -= prob * log(prob,2) #log base 2 return shannonEnt# reload(trees)myDat,labels = createDataSet()print(myDat)print(calcShannonEnt(myDat))
- 运行结果
[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]0.970950594455[Finished in 0.3s]
0 0
- 3_1决策树(Decision_Tree_ID3)——calcShannonEnt_3_1
- 决策树系列算法总结——决策树
- 决策树——ID3构建决策树
- 决策树01——决策树的原理
- 决策树02——决策树的构建
- 机器学习3——决策树总结
- 决策树——理论
- 决策树——实践
- MachineLearning——决策树
- 决策树——中文版
- 人工智能算法—决策树
- 人工智能算法—决策树
- 人工智能算法—决策树
- 人工智能算法—决策树
- Machine Learning—决策树
- 决策树—ID3
- 决策树—学习心得
- 分类算法—决策树
- Android之用UncaughtExceptionHandler实现保存崩溃日志到sdcard目录下的文件夹
- HTML骨架结构
- 4.24
- [IMWeb训练营]-团队作业
- Linux学习第四单元-管理系统中的简单分区和文件系统
- 3_1决策树(Decision_Tree_ID3)——calcShannonEnt_3_1
- 浅析spring中的AOP(面向切面编程)
- Linq模糊查询
- HTML文档头部
- 题目1376:最近零子序列
- Android仿微信朋友圈,全文收起功能,附源码
- Java正则表达式
- HTML文档声明
- 关于TabLayout和ViewPager联动不显示文字