python中计算KL divergence

  统计/机器学习 概率分布 描述性统计 Python    浏览次数:5214        分享
0

python中计算KL divergence有什么直接调用的函数吗?

如果没有的话,那就自己手写咯


 

飞翔钉子   2018-04-06 22:53



   2个回答 
5

scipy里的entropy实际上就可以计算Kullback–Leibler divergence

>>> from scipy.stats import entropy
>>> entropy(p, q)


SofaSofa数据科学社区DS面试题库 DS面经

sasa   2018-04-07 22:47

这个是二项分布的情况 - abuu   2019-01-15 09:51
4

@sasa 写了二项分布的情况,其实KL还可以做两个高斯分布的情况

假设两个高斯分布$p:N(\mu_1, \sigma_1^2)$,$q:N(\mu_2,\sigma_2^2)$,这两个高斯分布的KL divergence就等于

$$\text{KL}(p,q)=\log\frac{\sigma_2}{\sigma_1}+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac{1}{2}$$

上面的式子用python很好写的

SofaSofa数据科学社区DS面试题库 DS面经

abuu   2019-01-15 09:58



  相关讨论

怎么理解指数分布里的参数lambda?

如何度量一个分布长尾的程度?

顺序统计量(order statistics)是什么?

KL divergence为什么不是对称的?

样本中心矩和样本原点矩的定义分别是什么?

QQ-plot图里的x轴y轴是什么意思

boxplot里的横线是什么意思?

python产生服从常用概率分布的随机数

生成两组不独立的标准正态分布随机数

python怎么生成截断正态分布变量?

  随便看看

抛的硬币直到连续出现两次正面为止,平均要扔多少次

如何在numpy array尾部增加一行

分类变量,进行One hot编码,维度升高,如何处理?

python怎么对list中的元素做连乘?

如何调节seaborn里字体大小?