文章目录
一、熵(Entropy)
1.1 概念
熵,在信息论中是用来刻画信息混乱程度的一种度量。
最早源于热力学,后应广泛用于物理、化学、信息论等领域。1850年,德国物理学家鲁道夫·克劳修斯首次提出熵的概念,用来表示任何一种能量在空间中分布的均匀程度。1948年,Shannon在Bell System Technical Journal上发表文章“A Mathematical Theory of Communication”,将信息熵的概念引入信息论中。本文所说的熵就是Shannon熵,即信息熵,解决了对信息的量化度量问题。
1.2 定义
H ( D ) = − ∑ i = 1 n p i l o g p i H(D) = -\displaystyle \sum_{i=1}^{n} p_i logp_i H(D)=−i=1∑npilogpi
其中,
- n 代表X的n种不同的离散取值;
- p i p_i pi 代表了集合D取值为i的概率(比例);
- log 为以2或者e为底的对数;
- 从定义中可以看出变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
1.3 案例和代码
import math
from collections import Counter
def Entropy(DataList):
'''
计算随机变量 DataList 的熵
'''
counts = len(DataList) # 总数量
counter = Counter(DataList) # 每个变量出现的次数
prob = {
i[0]:i[1]/counts for i in counter.items()} # 计算每个变量出现的比例 p
H = - sum([i[1]*math.log2(i[1]) for i in prob.items()]) # 计算熵
print("总数量:",counts)
print("每个变量出现的次数:",counter)
print("每个变量出现的比例:",prob)
print("熵:",H)
return H
if __name__ == "__main__":
data_list_1 = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5 ]
data_list_2 = [1,1,1,1,2,2,2,2]
data_list_3 = [1,1,1,1,1,1,1,2]
data_list_4 = [1,2,2,2,2,2,2,2]
data_list_5 = [1,9,9,9,9,9,9,9]
print("----------数据集1")
HX1 = Entropy(data_list_1)
print("----------数据集2")
HX2 = Entropy

本文详细介绍了信息论中的熵、条件熵、信息增益和信息增益率概念,以及它们在决策树中的应用。通过案例和代码演示,展示了如何计算这些度量并理解它们在刻画数据不确定性和选择最优特征中的作用。

4776

被折叠的 条评论
为什么被折叠?



