计算条件熵

2024-04-25 07:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我被给予:

import numpy as np
import math
import pandas as pd

attrNms = ["attr 1", "attr 2", "attr 3", "attr 4", "attr 5"]

data = pd.DataFrame(
    [
        [1, 0, 1, 1, 1],
        [1, 1, 0, 0, 1],
        [0, 1, 1, 1, 1],
        [1, 0, 1, 0, 1],
        [1, 0, 0, 1, 1],
        [0, 0, 1, 1, 1],
        [1, 1, 1, 1, 1],
        [1, 0, 0, 1, 1],
        [0, 1, 0, 0, 1],
        [0, 0, 0, 1, 1],
    ],
    columns=attrNms,
)

data["cl"] = [1, 1, 1, 0, 0, 1, 1, 1, 0, 0].

我有一个函数

def getConditionalEntropy(cl, attr):
    AssocEnt = np.c_(cl, attr)
    CondEnt = AssocEnt - getEntropy(cl)
    return CondEnt

(getEntropy函数工作正常)但我需要一个函数,根据条件熵公式计算attr和cl的条件熵:𝐻(𝐶𝐿|𝑋)=−∑𝑥∈𝑋∑𝑦∈𝐶𝐿𝑝(𝑥,𝑦)𝑙𝑜𝑔2(𝑝(𝑥,𝑦)/𝑝(𝑥)). 还有,如果我们有𝑙𝑜𝑔2(0)则等于0,如果𝑝(𝑥)=0,那么𝑝(𝑥,𝑦)/𝑝(𝑥) 也等于0。很明显,x=attr和y=cl。函数应该为5个给定属性之一返回条件熵


Tags: 函数importnumpydataclasnpmath