一.定义
香农熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。
假定当前样本集合D中一共有n类样本,第i类样本为Xi ,那么Xi的信息定义为:
举例:
若小明和小华下棋,两人势均力敌,则信息熵H = -((1/2) log2 (1/2) + (1/2) log2 (1/2)) = 1bit。
二.计算
香农熵的计算公式为:
香农熵的值越小,则表明D的不纯度越低。
三.代码实现
计算香农熵的python函数实现:
# 计算香农熵
def calEnt(dataSet):
n = dataSet.shape[0] # 数据集总行数
iset = dataSet.iloc[:, -1].value_counts() # 标签的所有类别
p = iset / n # 每一类标签所占比
ent = (-p * (np.log2(p))).sum()
return ent
假设有如下数据集,试着实现计算香农熵的python代码。