Python Scipy.stats.entropy给出了与熵公式不同的结果
我试图计算概率分布的信息熵,但是我得到了两个不同的答案,我不知道为什么或者哪个是正确的Python Scipy.stats.entropy给出了与熵公式不同的结果,python,numpy,scipy,Python,Numpy,Scipy,我试图计算概率分布的信息熵,但是我得到了两个不同的答案,我不知道为什么或者哪个是正确的 我尝试使用scipy.stats.entropy 然后我查看了scipy.stats.entropy的源代码,与源代码一样,我使用scipy.special.entr计算了熵,得到了不同的答案 然后,我使用scipy.stats.entropy页面上给出的公式计算熵,得到了与2相同的答案 知道错误在哪里吗?熵自动规范化输入,使概率向量之和为1。您对f和g的计算不正确 如果您规范化数据,例如 data = np
知道错误在哪里吗?
熵
自动规范化输入,使概率向量之和为1。您对f
和g
的计算不正确
如果您规范化数据
,例如
data = np.random.rand(5)
data /= data.sum()
结果将一致:
In [35]: data = np.random.rand(5)
In [36]: data /= data.sum()
In [37]: entropy(data, base=2)
Out[37]: 2.2295987226926375
In [38]: np.sum(entr(data))/np.log(2)
Out[38]: 2.2295987226926375
In [39]: -np.sum(data*np.log2(data))
Out[39]: 2.2295987226926375
熵
自动规范化输入,使概率向量之和为1。您对f
和g
的计算不正确
如果您规范化数据
,例如
data = np.random.rand(5)
data /= data.sum()
结果将一致:
In [35]: data = np.random.rand(5)
In [36]: data /= data.sum()
In [37]: entropy(data, base=2)
Out[37]: 2.2295987226926375
In [38]: np.sum(entr(data))/np.log(2)
Out[38]: 2.2295987226926375
In [39]: -np.sum(data*np.log2(data))
Out[39]: 2.2295987226926375