首页 > 解决方案 > 计算条件熵

问题描述

我得到:

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 个给定属性之一的条件熵。

标签: pythonentropy

解决方案


推荐阅读