Ich habe die folgende Funktion implementiert, um die Entropie zu berechnen:
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
Ergebnis:
>>> 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
Mein Verständnis war, dass die Entropie zwischen 0 und 1 liegt, wobei 0 sehr sicher und 1 sehr unsicher bedeutet. Warum bekomme ich ein Entropiemaß größer als 1?
Ich weiß, dass das Entropiemaß kleiner ist, wenn ich die Log-Basis vergrößere, aber ich dachte, Basis 2 sei Standard, also denke ich nicht, dass das das Problem ist.
Mir muss etwas Offensichtliches fehlen, aber was?