Eu implementei a seguinte função para calcular a entropia:
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
Meu entendimento era que a entropia está entre 0 e 1, 0 significa muito certo e 1 significa muito incerto. Por que obtenho uma medida de entropia maior que 1?
Sei que se aumentar o tamanho da base de log, a medida de entropia será menor, mas pensei que a base 2 fosse padrão, então não acho que esse seja o problema.
Eu devo estar perdendo algo óbvio, mas o que?