Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 涉及极小数的可能性_Python_Numpy_Data Fitting_Underflow - Fatal编程技术网

Python 涉及极小数的可能性

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

我有一个很大的可能性向量,都在(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)), ...., (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)

你好,我意识到我对我的问题解释得有多糟糕,我对它进行了大量的编辑。我尝试过类似的方法,但我相信我可能没有正确地实现它,谢谢你的帮助,我将进行回顾