Matplotlib mlab熵计算不正确?

时间:2014-04-25 11:20:13

标签: python matplotlib entropy

我一直在使用matplotlib.mlab.entropy函数,并注意到mlab代码中可能存在错误。

文档说明计算是:

Entropy formula http://matplotlib.org/_images/mathmpl/math-5c77f15b40.png

请注意基于两个的日志。根据熵的通常定义,这是正确的。

但是,在mlab.py源中,计算使用的是自然对数:

S = -1.0 * np.sum(p * np.log(p)) + np.log(delta)

当然应该是np.log2()

我自己尝试使用其他几种方法进行计算(例如this)。我已经复制并修改了mlab函数,并通过将np.log更改为np.log2使其与其他函数保持一致。

因此我认为matplotlib.mlab.entropy不正确。或者我错过了什么?

2 个答案:

答案 0 :(得分:0)

没有“正确”的基础。

引用维基百科:“熵通常以比特,自然或禁令来衡量。”以及http://en.wikipedia.org/wiki/Entropy_(information_theory)#Definition

的基数

根据我的经验:统计学和计量经济学中的熵几乎总是用自然对数来定义,信号处理中的熵通常用基数2来定义。

scipy.stats中的相应功能最近获得了一个基本关键字选项,可以从基础e默认切换到基数2。

答案 1 :(得分:0)

文档不正确,由@ user333700确认。

根据matplotlib-users邮件列表的建议,我提交了pull request来修复文档。