我在一篇名为A Neural Bayesian Estimator for Conditional Probability Densities的论文中实现了一些变量的预处理。在
它声明: 1.)给定一个非线性的单调变量变换F:t->;s,使s均匀分布。如本文所述,可通过以下方式实现:
>>> sorting the target vector in ascending order
>>> fitting the spline to data, e.g. using interpolate from scipy
2.)之后,s被缩放到-1和1之间。这可以通过interp
来实现:
3.)最后,平面分布需要转换成高斯分布,以std1为中心。在
虽然前两个步骤在如何实施上很明确,但我正在努力解决第三个步骤。在
关于3),作者进一步指出可以使用积分X^2(X…chi)函数的逆。有没有适合这项工作的库,最好是Python?在
更新1:
再看一遍这篇文章,似乎X^2与气没有直接关系,而是计算如下:
X^2=p*(1-o)^2+(1-p)*((-1)-o)^2
用P
作为纯度(可以很容易地计算给定的变量)和{
对于标度在-1和1之间的给定s,我可以计算下限为-1,上限为s的积分,然后求出它的逆。在
问:如何在数字上做到这一点?在
如果您的意思是X2如所述的PDF发行版here,那么您所看到的是X2CDF。它是通过不完全伽马函数表示的,见同一个参考文献,你可以用SciPy来计算它,this或{a3}应该是合适的。别忘了分母中的全伽马函数。在
要找到不完全Gamma的逆函数,可以从SciPy:this或that中查看逆函数。在
所以,我不认为你需要所有这些插值的东西
更新
这个表达式可以通过分析计算,比如说,使用在线积分器 像that。只要计算上界的结果和下界的结果之间的差,就可以设置了
更新II
你必须自己设定时间间隔
以下是(绝对未经测试!)您可以尝试使用的代码。注意,我用的是通用的 但是,由于积分是多项式,所以更理想的方法可能是 使用here的多项式根,甚至 自己编写代码-它只是一个cubic equation
更新III
变量
^{pr2}$rn
被定义为从0到1的某个(随机U(0,1))数。在相关问题 更多 >
编程相关推荐