我实现了以下函数来计算熵:
from math import log
def calc_entropy(probs):
my_sum = 0
for p in probs:
if p > 0:
my_sum += p * log(p, 2)
return - my_sum
结果:
>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
1.1488348542809168
>>> from scipy.stats import entropy # using a built-in package
# give the same answer
>>> entropy([1/7.0, 1/7.0, 5/7.0], base=2)
1.1488348542809166
我的理解是熵介于 0 和 1 之间,0 表示非常确定,1 表示非常不确定。为什么我得到大于 1 的熵度量?
我知道如果我增加对数基数的大小,熵度量会更小,但我认为基数 2 是标准的,所以我认为这不是问题。
我一定遗漏了一些明显的东西,但是什么?