信息熵(香农熵)的通俗理解
发布时间
阅读量:
阅读量
熵的通俗理解

样本集合不纯净度越高,则数据集纯净度越高。当知识的不确定性程度较小时,则知识的不确定性较低。系统的复杂度与熵呈正相关关系。而信息量则是衡量特定事件发生所提供的信息的重要指标。最后而言之,则是说信息熵是衡量特定事件所有可能结果的信息量期望值的一种指标。
2.watermelon的信息熵(香农熵)

代码如下:
import numpy as np
def cancShannonEnt(dataSet):
'''
:param dataSet: dataSet
:return: shannonEnt
'''
# 计算公式前,注意数据的格式(array)
numEntries = len(dataSet) # 获取数据的行数
labelCounts = { } # 设置字典数据格式,想要存储的数据格式为:类别:频数
for featVec in dataSet: # 获取数据集每一行的数据
currentLabel = featVec[-1] # 获取特征向量的最后一列
# 检查字典中key是否存在
# 如果key不存在
if currentLabel not in labelCounts.keys():
# 将当前的标签存于字典中,并将频数置为0
labelCounts[currentLabel] = 0
# 如果key存在,在当前的键值上+1
labelCounts[currentLabel] +=1
# 数据已准备好,计算熵
shannonEnt = 0.0 # 初始化信息熵
for key in labelCounts: # 遍历出数据中所的类别
pro = float(labelCounts[key]) /numEntries
shannonEnt -= pro * np.log(pro, 2) # 计算信息熵
return shannonEnt # 返回信息熵
全部评论 (0)
还没有任何评论哟~
