J'ai implémenté la fonction suivante pour calculer l'entropie:
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
Résultat:
>>> 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
Ma compréhension était que l'entropie est comprise entre 0 et 1, 0 signifiant très certain et 1 signifiant très incertain. Pourquoi ai-je une mesure d'entropie supérieure à 1?
Je sais que si j'augmente la taille de la base logarithmique, la mesure d'entropie sera plus petite, mais je pensais que la base 2 était standard, donc je ne pense pas que ce soit le problème.
Je dois manquer quelque chose d'évident, mais quoi?