Python 涉及极小数的可能性
我有一个很大的可能性向量,都在(0到1)范围内,但是所有的数字都比1小很多。我需要计算这些向量乘积的最大似然 我怎样才能避免下溢,我的装配工在我所有的尝试中都失败了。我采取的第一步是将数组除以数组中的最大值。 我最大化n次采样的两个概率之和的乘积,最终我需要根据BIC最小化:Python 涉及极小数的可能性,python,numpy,data-fitting,underflow,Python,Numpy,Data Fitting,Underflow,我有一个很大的可能性向量,都在(0到1)范围内,但是所有的数字都比1小很多。我需要计算这些向量乘积的最大似然 我怎样才能避免下溢,我的装配工在我所有的尝试中都失败了。我采取的第一步是将数组除以数组中的最大值。 我最大化n次采样的两个概率之和的乘积,最终我需要根据BIC最小化: BIC = -2. * ln(L) + 5n_theta(nz) 总之,L是一个非常小的表单数字数组 L = product of ([(p(z1|a) + p(z1|b)), (p(z2|a) + p(z2|b)),
BIC = -2. * ln(L) + 5n_theta(nz)
总之,L
是一个非常小的表单数字数组
L = product of ([(p(z1|a) + p(z1|b)), (p(z2|a) + p(z2|b)), ...., (p(zn|a) + p(zn|b))])
这里是一个例子,有两个参数
a
和b
,我改变了它们,数组的大小为n
,每个p
都是<1
您考虑过在对数似然中工作吗
L=(p1*p2*p3)**N
变成ln(L)=N*(ln(p1)+ln(p2)+ln(p3))
这将更能抵抗数值精度问题
然后你可以直接在你的
-2.0*ln(L)+5n_theta(nz)
中使用ln(L)
,你好,我意识到我对我的问题解释得有多糟糕,我对它进行了大量的编辑。我尝试过类似的方法,但我相信我可能没有正确地实现它,谢谢你的帮助,我将进行回顾