计算条件熵代码(Python)

本文介绍了条件熵的概念及其计算方法,并提供了一段Python代码用于计算两个随机变量之间的条件熵。通过具体的例子展示了如何将数据转换为联合概率分布并计算条件熵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先给出条件熵的定义,摘自维基百科:

If H(Y|X=x) is the entropy of the discrete random variable Y conditioned on the discrete random variable X taking a certain value x, then H(Y|X) is the result of averaging H(Y|X=x) over all possible values x that X may take.

大致可以理解为在条件X下,Y的条件概率分布对X的期望。

计算公式如下,摘自维基百科:


由于没有在网上找到相关计算条件熵的代码,于是我根据以上公式自己写了一个Python版本的代码。

首先给出一段待计算的数据。这里给出的是两个随机变量间的具体数量分布,并转换为联合概率密度。

data=np.array([[0,1963,0],
               [0,363,0],
               [0,425,0],
               [0,936,2],
               [1265,256,4755],
               [0,95,0],
               [98,36,1374],
               [0,1751,0]])
totalval=float(np.sum(data))
data=(data)/totalval    #求联合概率分布
print data

具体计算代码如下:

def calcConditionalEnt(data):
    #先计算条件熵的每一项
    def calcSingleEnt(p_xy,p_x):
        return p_xy*math.log((p_x/p_xy),2) if p_xy!=0 else 0

    ConditionEnt=0
    for i in range(len(data[0])):
        colsum=map(sum,zip(*data))  #各列求和
        for j in range(len(data)):
            ConditionEnt+=calcSingleEnt(data[j][i],colsum[i])   #各项熵求和

    return ConditionEnt





评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值