【发布时间】:2019-01-24 09:25:11
【问题描述】:
我必须编写 Python 脚本来计算 Renyi 散度。离散变量很简单,但我正在处理连续变量。由于数字错误,我遇到了很多问题。我已经成功地为我的样本估计了 pdf。这就是我的代码的样子:
def cont_renyi_divergence(pdf1, pdf2, alpha, minimum, maximum):
def integrand(x):
return ((pdf1(x))**alpha) * ((pdf2(x))**(1-alpha))
def KL_integrand(x):
return (pdf1(x)) * log((pdf1(x))/(pdf2(x)), e)
if alpha == 1:
return -integrate.quad(KL_integrand, minimum, maximum)[0]
else:
return (1/(1-alpha))*log(integrate.quad(integrand, minimum, maximum)[0], e)
其中 pdf1 和 pdf2 基于高斯分布(pdf1 的均值和方差分别为 30 和 5,pdf2 的均值和方差分别为 30 和 10)。最小值和最大值是样本 1 (pdf1) 或样本 2 (pdf2) 中的最小/最大变量。这是我的函数的定义,它计算 Renyi divrgence。问题是,这个函数的返回不等于equation,它告诉我们两个正态(高斯)分布的散度。我知道,这是一个很难的话题,但我很乐意得到任何答案或建议。
【问题讨论】:
标签: python