### 信息

结果编号 信息
1		000
2		001
3		010
4		011
5		100
6		101
7		110
8		111


$$i = \log_2 N$$

## 物理的熵和信息的熵

$$S \propto \ln \Omega$$

$$I \propto \log N$$

## 熵 —— 平均信息量

$$H = p_1 \log_2 {\dfrac{1}{p_1}} + p_2 \log_2 {\dfrac{1}{p_2}} + \cdots$$

$$H = - \sum p_i \log_2 p_i$$

$$S = -K \sum p_i \log_{e} p_i$$

## 计算数据集的信息熵

def calcShannonEnt(dataSet):
numEntires = len (dataSet)                        #返回数据集的行数
labelCounts = {}                                #保存每个标签 (Label) 出现次数的字典
for featVec in dataSet:                            #对每组特征向量进行统计
currentLabel = featVec [-1]                    #提取标签 (Label) 信息
if currentLabel not in labelCounts.keys ():    #如果标签 (Label) 没有放入统计次数的字典，添加进去
labelCounts[currentLabel] = 0
labelCounts [currentLabel] += 1                #Label 计数
shannonEnt = 0.0                                #经验熵 (香农熵)
for key in labelCounts:                            #计算香农熵
prob = float (labelCounts [key]) /numEntires    #选择该标签 (Label) 的概率
shannonEnt -= prob * log (prob, 2)            #利用公式计算
return shannonEnt                                #返回经验熵 (香农熵)