我在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?
鉴于此矩阵,我可以通过在行中的第一个数字上添加/减去微小错误来进行修复,但这显然是非常糟糕的做法。
我该如何解决?