Я использую скрытую функцию распределения Дирихле в 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?
Учитывая эту матрицу, я могу исправить, добавив / вычтя крошечную ошибку к первому числу в строке, но это, очевидно, очень плохая практика.
Как я могу исправить?