使用NumPy避免联合概率的下溢

时间:2012-08-13 13:37:11

标签: numpy underflow

我面临着在简单设置中估算自变量的联合概率的问题。目前我有一个包含100个随机变量的数组,我想获得它们的联合概率而不会陷入下溢问题。任何想法如何在numpy中实现这一目标?如果可能的话?

如果没有,有人可以请进一步向我解释NumPy例程(logaddexp)的作用,因为我认为在这种情况下这可能对我有所帮助。

1 个答案:

答案 0 :(得分:9)

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)。