我面临着在简单设置中估算自变量的联合概率的问题。目前我有一个包含100个随机变量的数组,我想获得它们的联合概率而不会陷入下溢问题。任何想法如何在numpy中实现这一目标?如果可能的话?
如果没有,有人可以请进一步向我解释NumPy例程(logaddexp)的作用,因为我认为在这种情况下这可能对我有所帮助。
答案 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)。