Ho implementato la seguente funzione per calcolare l'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
Risultato:
>>> 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
La mia comprensione era che l'entropia è tra 0 e 1, 0 che significa molto certo e 1 che significa molto incerto. Perché ottengo una misura di entropia maggiore di 1?
So che se aumento le dimensioni della base del log, la misura dell'entropia sarà più piccola, ma ho pensato che la base 2 fosse standard, quindi non penso che sia il problema.
Mi manca qualcosa di ovvio, ma cosa?