【发布时间】:2012-08-09 17:56:49
【问题描述】:
我面临一个问题,即在简单的设置中估计自变量的联合概率。目前我有一个包含 100 个随机变量的数组,我想在不陷入下溢问题的情况下获得它们的联合概率。任何想法如何在 numpy 中实现这一目标?如果可能的话?
如果不能,请进一步解释一下 NumPy 例程 (logaddexp) 的作用,因为我认为在这种情况下它可能对我有帮助。
【问题讨论】:
我面临一个问题,即在简单的设置中估计自变量的联合概率。目前我有一个包含 100 个随机变量的数组,我想在不陷入下溢问题的情况下获得它们的联合概率。任何想法如何在 numpy 中实现这一目标?如果可能的话?
如果不能,请进一步解释一下 NumPy 例程 (logaddexp) 的作用,因为我认为在这种情况下它可能对我有帮助。
【问题讨论】:
logaddexp 允许您通过存储和处理它们的对数来扩展可表示值的范围(降低精度)。
e1, e2 = np.log(p1), np.log(p2) # convert p1, p2 to log form
e1e2 = e1 + e2 # e1e2 is now np.log(p1 * p2)
e3 = np.logaddexp(e1, e2) # e3 = np.log(p1 + p2)
您只需要检查您的代码,将** 更改为*、* 更改为+ 和+ 更改为np.logaddexp,并在最后转换回np.exp。
普通的 64 位双精度浮点数的最小正数为 2.2E-308;存储日志可以为您提供有效的最小正数正常 1E-(1.7E308)。
【讨论】:
log(p(x)) = log(0.01) + log(0.02) + log(0.03).