用Python,输入联合概率,计算熵、联合熵、条件熵

博客探讨了如何使用Python输入联合概率分布来计算熵、联合熵以及条件熵。通过举例展示了如何处理[1/9, 1/2, 1/6, 2/9]的测试情况,同时指出目前存在一些问题,作者正在进行研究。" 117625920,5055583,数据库设计与规范指南,"['数据库', '设计规范', 'SQL', '索引设计', '存储过程', '表设计']

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

输入XY的联合概率分布p(xy),输出H(XY)、H(Y|X)、H(X|Y)

import numpy as np

def Entropy(DataList):
    SUM = 0
    for i in DataList:
        if i > 1 or i <= 0: #健壮性判断
            print("概率分布错误")
        else:
            SUM = SUM -np.log2(i)* i #熵值计算
    return SUM

pXY = eval(input("请输入X和Y的联合概率分布:如[a1b1,a1b2,a2b1,a2b2]"))
lenx = int(input("请输入X的样本个数:"))

HXY = Entropy(pXY)#计算联合熵
pXY2 = [pXY[i:i+lenx] for i in range(0,len(pXY),lenx)]#将列表按x个数拆分
HY = Entropy(np.sum(pXY2, axis=0))#对子列表转置后求和再求熵H(Y)   
HX = Entropy(np.sum(pXY2, axis=1))#对子列表求和再求熵H(X)   
HY_X = HXY - HX#算条件熵
HX_Y = HXY - HY

print( "H(XY) = ",  float( "{0:.5}".format(HXY)))
print( "H(Y|X) = ",  float( "{0:.5}".format(HY_X)))
print( "H(X|Y) = ",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值