我试图在2个概率分布之间计算Python中的KL差异。
首先我使用lib dit
from dit.divergences import kullback_leibler_divergence
p = dit.Distribution(['0', '1'], [3/4, 1/4])
q = dit.Distribution(['0', '1'], [1/2, 1/2])
kullback_leibler_divergence(p, q)
这会返回0.1887
如果我尝试使用scipy
执行相同的操作from scipy.stats import entropy
p = [3/4, 1/4]
q = [1/2, 1/2]
entropy(p,q)
这会返回0.1308
为什么结果有差异?
答案 0 :(得分:3)
对数基数不同。 dit使用log_2而scipy使用log_e。