python 信息熵、条件熵、信息增益、信息增益率、基尼系数

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

一、熵(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=1npilogpi
其中,

  • 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值