python 信息熵(含联合熵、条件熵)

python 信息熵(含联合熵、条件熵)_第1张图片
python 信息熵(含联合熵、条件熵)_第2张图片

三、python 实现

import math
from collections import Counter

def Entropy(DataList):
    '''
        计算随机变量的熵
    '''
    counts = len(DataList)      # 总数量
    counter = Counter(DataList) # 每个变量出现的次数
    prob = {i[0]:i[1]/counts for i in counter.items()}      # 计算每个变量的 p*log(p)
    H = - sum([i[1]*math.log2(i[1]) for i in prob.items()]) # 计算熵
    
    return H

if __name__ == "__main__":
    X = [1,2,2,2,3,3,1,2,3,1]
    Y = [1,1,1,2,2,2,2,1,1,1]
    XY = list(zip(X,Y))
    
    HX = Entropy(X)   # 随机变量 X 的熵
    HY = Entropy(Y)   # 随机变量 Y 的熵
    HXY = Entropy(XY) # 联合熵 XY
    HX_Y = HXY - HY   # 条件熵  X|Y
    HY_X = HXY - HX   # 条件熵  Y|X
    print("随机变量 X 的熵: ",HX)
    print("随机变量 Y 的熵: ",HY)
    print("     联合熵 XY: ",HXY)
    print("   条件熵  X|Y: ",HX_Y)
    print("   条件熵  Y|X: ",HY_X)

python 信息熵(含联合熵、条件熵)_第3张图片

  • 参考:二维随机变量的联合熵和条件熵的Python实现

你可能感兴趣的:(python,概率论,机器学习,数据分析)