scipy.stats.Mixture.
logentropy#
- Mixture.logentropy(*, method=None)[源代码]#
微分熵的对数
用概率密度函数 \(f(x)\) 和支持集 \(\chi\) 表示,随机变量 \(X\) 的微分熵(或简称“熵”)为:
\[h(X) = - \int_{\chi} f(x) \log f(x) dx\]logentropy
计算微分熵的对数(“对数熵”),\(log(h(X))\),但与朴素的实现(先计算 \(h(X)\) 再取对数)相比,它在数值上可能更优。- 参数:
- method{None, ‘formula’, ‘logexp’, ‘quadrature}
用于评估对数熵的策略。默认值(
None
)是,基础设施会从以下选项中选择,按优先级顺序排列。'formula'
: 使用对数熵本身的公式'logexp'
: 计算熵并取对数'quadrature'
: 数值积分熵积分的对数
并非所有分布都提供所有 method 选项。如果所选的 method 不可用,则会引发
NotImplementedError
。
- 返回:
- outarray
对数熵。
注释
如果分布的熵为负数,则对数熵是复数,虚部为 \(\pi\)。为保持一致性,此函数的结果始终具有复数 dtype,无论虚部的值如何。
参考
[1]微分熵, 维基百科, https://en.wikipedia.org/wiki/Differential_entropy
示例
使用所需的参数实例化分布
>>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-1., b=1.)
评估对数熵
>>> X.logentropy() (-0.3665129205816642+0j) >>> np.allclose(np.exp(X.logentropy()), X.entropy()) True
对于熵为负的随机变量,对数熵的虚部等于 np.pi。
>>> X = stats.Uniform(a=-.1, b=.1) >>> X.entropy(), X.logentropy() (-1.6094379124341007, (0.4758849953271105+3.141592653589793j))