logentropy#
- Смесь.logentropy(*, метод=None)[источник]#
Логарифм дифференциальной энтропии
В терминах функции плотности вероятности \(f(x)\) и поддержка \(\chi\), дифференциальная энтропия (или просто «энтропия») непрерывной случайной величины \(X\) равен:
\[h(X) = - \int_{\chi} f(x) \log f(x) dx\]Определение для дискретной случайной величины аналогично, с заменой PDF на PMF и суммированием по носителю вместо интеграла.
logentropyвычисляет логарифм дифференциальной энтропии (“лог-энтропия”), \(\log(h(X))\), но он может быть численно более выгодным по сравнению с наивной реализацией (вычисление \(h(X)\) затем взятие логарифма).- Параметры:
- метод{None, 'formula', 'logexp', 'quadrature}
Стратегия, используемая для оценки лог-энтропии. По умолчанию (
None), инфраструктура выбирает между следующими вариантами, перечисленными в порядке приоритета.'formula': использование формулы для самой лог-энтропии'logexp': оценить энтропию и взять логарифм'quadrature': численно логарифмически интегрировать (или, в дискретном случае, логарифмически суммировать) логарифм интегранда (сумманда) энтропии
Не все метод опции доступны для всех распределений. Если выбранная метод недоступен,
NotImplementedErrorбудет вызвано исключение.
- Возвращает:
- выходмассив
Лог-энтропия.
Примечания
Дифференциальная энтропия непрерывного распределения может быть отрицательной. В этом случае логарифм энтропии является комплексным с мнимой частью \(\pi\). Для согласованности результат этой функции всегда имеет комплексный тип данных, независимо от значения мнимой части.
Ссылки
[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))