0
回答
python 关于计算熵的问题-有代码,但是运行结果不对。
终于搞明白,存储TCO原来是这样算的>>>   

用python计算数据表中clicklist列的块熵值,但是计算出来值为负数,这个不合理啊。求解答。代码如下:

from collections import Counter
Pr = Counter(b)  # 统计单个符号的出现频数

from math import log2
def entropy(pr):
    log2 = math.log2
    total = len(pr)
    ent = 0
    for i in pr:
        p = float(pr[i]) / total
        ent = ent-p * log2(p)
    return ent

HL = [];
HL.append(0)
HL.append(entropy(Pr))
for i in range(2, 7):
    P = {}
    m = len(b) - i;
    print(m)
    j = 0
    while j < m:
        a = 0
        str1 =''
        while a < i:
            str1 = str1 + b.iloc[a+i]
            a += 1
            if str1 in P.keys():  # 已在字典中的块
                P[str1] = P[str1] + 1
            else:  # 不在字典中的块
                P[str1] = 1
            j += 1
            print(P)


    Pr = Counter(P)  # Pr 是字典,key 为块,value 为频数
    print(Pr)
    HL.append(entropy(Pr))  # 计算块熵
    print(HL)

a=pd.DataFrame(HL)
a.to_clipboard()

顶部