Как сделать так, чтобы распределение вероятностей составило ровно 1,0 в Python NumPy? - PullRequest
0 голосов
/ 27 сентября 2018

Я использую скрытую функцию распределения Дирихле в sklearn: http://scikit -learn.org / stable / modules / generate / sklearn.decomposition.LatentDirichletAllocation.html Вывод представляет собой двумерный массив с плавающей точкой,в которой каждая строка является распределением вероятностей.Тем не менее, некоторые строки не в сумме равны 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
 ...

У меня возникла проблема на следующих этапах моего проекта из-за этой проблемы.В частности, массив 2d сохраняется в виде кадра данных pandas и сохраняется в виде файла .csv.Другой R-скрипт загружает матрицу из CSV-файла и вычисляет общее вариационное расстояние между парами строк, применяя пакетную функцию distrEx::TotalVarDist(), которая фактически добавляет их и выдает ошибку, если сумма не равна 1,0.Для этого потребуется сумма (строка) == 1,0 для каждой строки.

Как я могу убедиться, что все строки в сумме равны 1,0?

Учитывая эту матрицу, я могу исправить, добавив / вычтя крошечную ошибку к первому числу в строке, но это, очевидно, очень плохая практика.

Как я могу исправить?

...