scipy.stats.Mixture.
logentropy#
- Mixture.logentropy(*, method=None)[源代码]#
微分熵的对数
对于概率密度函数 \(f(x)\) 和支持 \(\chi\),连续随机变量 \(X\) 的微分熵(或简称为“熵”)为
\[h(X) = - \int_{\chi} f(x) \log f(x) dx\]离散随机变量的定义类似,用 PMF 代替 PDF,用对支持的求和代替积分。
logentropy
计算微分熵的对数(“log-entropy”),\(\log(h(X))\),但与朴素实现(计算 \(h(X)\) 然后取对数)相比,它在数值上可能更有利。- 参数:
- method{None, ‘formula’, ‘logexp’, ‘quadrature}
用于评估 log-entropy 的策略。默认情况下(
None
),基础结构在以下选项之间进行选择,按优先级顺序列出。'formula'
: 使用 log-entropy 本身的公式'logexp'
: 评估熵并取对数'quadrature'
: 数值上对熵被积函数(被加数)的对数进行对数积分(或在离散情况下,对数求和)
并非所有分布都可使用所有 method 选项。如果选择的 method 不可用,则会引发
NotImplementedError
。
- 返回值:
- out数组
log-entropy。
备注
连续分布的微分熵可以是负数。在这种情况下,log-entropy 是复数,虚部为 \(\pi\)。为了保持一致性,此函数的结果始终具有复数 dtype,而不管虚部的值如何。
参考文献
[1]示例
实例化具有所需参数的分布
>>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-1., b=1.)
评估 log-entropy
>>> X.logentropy() (-0.3665129205816642+0j) >>> np.allclose(np.exp(X.logentropy()), X.entropy()) True
对于具有负熵的随机变量,log-entropy 的虚部等于 np.pi。
>>> X = stats.Uniform(a=-.1, b=.1) >>> X.entropy(), X.logentropy() (-1.6094379124341007, (0.4758849953271105+3.141592653589793j))