为什么我的熵()得不到相同的结果?

时间:2017-03-12 14:26:38

标签: python numpy

scipy.stats.entropy的文档说:

  

如果qk不是None,则计算Kullback-Leibler散度S = sum(pk * log(pk / qk), axis=0)

print(np.sum(p * np.log(p / q), axis=0))
print(entropy(p, q))

但是,我在这里得到两个不同的值:

0.510046080249
0.353272019382

在这两种情况下,应使用基数 e 的对数。那么为什么我会得到两个不同的结果?

1 个答案:

答案 0 :(得分:1)

我认为您没有将pq规范化为1.请参见下文:

import numpy as np
from scipy.stats import entropy

p = np.asarray([1,2])
q = np.asarray([2,3])

p_norm = p/np.sum(p)
q_norm = q/np.sum(q)

print(np.sum(p_norm * np.log(p_norm / q_norm), axis=0))
print(entropy(p, q))