Tôi đã thực hiện các chức năng sau để tính toán entropy:
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
Kết quả:
>>> 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
Tôi hiểu rằng entropy nằm trong khoảng từ 0 đến 1, 0 có nghĩa là rất chắc chắn và 1 có nghĩa là rất không chắc chắn. Tại sao tôi có số đo entropy lớn hơn 1?
Tôi biết rằng nếu tôi tăng kích thước của cơ sở nhật ký, số đo entropy sẽ nhỏ hơn, nhưng tôi nghĩ cơ sở 2 là tiêu chuẩn, vì vậy tôi không nghĩ đó là vấn đề.
Tôi phải thiếu một cái gì đó rõ ràng, nhưng những gì?