如何确保概率分布在python numpy中的总和为1.0?

时间:2018-09-26 21:54:47

标签: python numpy floating-point probability

我在sklearn中使用了潜在Dirichlet分配功能:http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html 输出是一个浮点数的2d numpy数组,其中每一行都是概率分布。但是,某些行的总和不等于1.0,例如:

row index,  sum
5           0.9999999999999999
6           0.9999999999999999
7           1.0000000000000002
9           0.9999999999999999
10          0.9999999999999999
12          0.9999999999999999
13          1.0000000000000002
 ...

由于这个问题,我在项目的后续步骤中遇到了问题。 具体来说,二维数组将另存为pandas数据帧,并另存为.csv文件。另一个R脚本从.csv文件中加载矩阵,并通过应用包装函数distrEx::TotalVarDist()计算行对之间的总变异距离,如果总和不为1.0,则实际上将它们相加并引发错误。每行将需要sum(row)== 1.0。

如何确保所有行的总和恰好为1.0?

鉴于此矩阵,我可以通过在行中的第一个数字上添加/减去微小错误来进行修复,但这显然是非常糟糕的做法。

我该如何解决?

0 个答案:

没有答案