900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 机器学习实战2.1--决策树之求数据集的香农熵

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

时间:2020-01-27 15:07:07

相关推荐

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

1.什么是香农熵?

集合信息的度量方式称为香农熵或者简称为熵。

熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义。如果待分类的事务可能划分在多个分类之中,则符号的信息定义为:

其中是选择该分类的概率。

为了计算熵,我们需要计算所有类别所有可能值包含的信息期望,通过下面的式子得到:

其中n是分类的数目。

2.计算给定数据集的香农熵

代码如下:

#计算给定数据集的香农熵from math import logdef calcShannonEnt(dataSet):num=len(dataSet) #数据集的样本数量labelCount={}#创建一个数据字典,它的键是数据集最后一列的数据,集样本的类别;它的值是该分类中的样本数量#计算每种类别下的样本数量,并将其放在字典中对应的键下for featureVec in dataSet:label=featureVec[-1]#取样本中的最后一个值if label not in labelCount.keys():labelCount[label]=1else:labelCount[label]+=1#计算数据集的熵shannonEnt=0.0for key in labelCount.keys():pro=float(labelCount[key])/numshannonEnt-=pro*log(pro,2)return shannonEntdataSet=[[1,1,'yes'],[1,1,'yes'],[1,0,'no'],[0,1,'no'],[0,1,'no']]print(calcShannonEnt(dataSet))

运行结果:

0.9709505944546686

3.计算给定数据集的香农熵的步骤如下:

1.计算数据集中实例的总数

2.创建一个数据字典,它的键为数据集中最后一列的数据。如果当前键不存在,则扩展字典并将当前键加入字典。每个键对应的值都记录了当前类别出现的次数。

3.分别计算所有类别出现的概率。然后根据这个概率计算香农熵。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。