Implementé la siguiente función para calcular la entropía:
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
Resultado:
>>> 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
Comprendí que la entropía está entre 0 y 1, 0 significa muy seguro y 1 significa muy incierto. ¿Por qué obtengo una medida de entropía mayor que 1?
Sé que si aumento el tamaño de la base de registro, la medida de entropía será menor, pero pensé que la base 2 era estándar, por lo que no creo que ese sea el problema.
Debo estar perdiendo algo obvio, pero ¿qué?