香农熵函数返回 -0.0 而不是 0.0

问题描述 投票:0回答:1

我的“aaaaa”香农熵函数应该返回 0.0,但给了我 -0.0。我该如何解决这个问题?

python entropy
1个回答
1
投票

由于

-0.0 == 0.0
为真,因此您所得到的在数学上是正确的。如果您发现输出不美观,修复方法很简单。不要乘以
-1
。取绝对值代替:

from collections import Counter
import math

def entropy(string):
    counts = Counter(string)
    rel_freq = ((i/len(string)) for i in counts.values())
    return abs(sum(f*math.log2(f) for f in rel_freq))

然后

entropy('aaaaa')
计算为
0.0

© www.soinside.com 2019 - 2024. All rights reserved.