Я реалізував таку функцію для обчислення ентропії:
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
Результат:
>>> 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
Я розумів, що ентропія становить від 0 до 1, 0 означає дуже певно, а 1 означає дуже невизначено. Чому я отримую міру ентропії більше 1?
Я знаю, що якщо збільшити розмір бази журналів, міра ентропії буде меншою, але я подумав, що база 2 є стандартною, тому я не думаю, що це проблема.
Я, мабуть, пропускаю щось очевидне, але що?