python中计算KL divergence有什么直接调用的函数吗?
如果没有的话,那就自己手写咯
2个回答
scipy里的entropy实际上就可以计算Kullback–Leibler divergence
>>> from scipy.stats import entropy
>>> entropy(p, q)
这个是二项分布的情况
-
abuu
2019-01-15 09:51
@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面经相关讨论
随便看看