用Python,实现平均互信息I(X;Y)的计算

输入X的概率分布、以及Y在X条件下的条件分布,计算平均互信息 I(X;Y)

I\left ( X;Y\right )=\sum_{i =1}^{r}\sum_{j=1}^{s}P(a_{i}b_{j}) log\frac{p\left ( a_{i} |b_{j}\right )}{P\left ( a_{i} \right )}

import numpy as np

px = eval(input("请输入X的概率分布p(x):[p1,p2,...]"))
py_x = eval(input("请输入条件概率分布p(y|x):[P1,P2,...]"))
SUM = 0

# 计算联合概率密度pxy
func = lambda x,y:x*y
result = map(func,p,pyx)
pxy=list(result)

pxy2 = [pxy[i:i+len(px)] for i in range(0,len(pxy),len(px))]#将列表按x个数拆分
py = np.sum(pxy2, axis=0)#对子列表转置后求和
px_y = pxy/py
 
if sum(px) != 1 :
    print("概率分布错误")
fo
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值