DIT和Scipy.Stats中KL分歧结果的差异

时间:2017-04-16 15:04:18

标签: python numpy scipy

我试图在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

为什么结果有差异?

1 个答案:

答案 0 :(得分:3)

对数基数不同。 dit使用log_2而scipy使用log_e。