Python cosine_simility не работает для матрицы с NaN - PullRequest
0 голосов
/ 17 января 2019

Нужно найти python функцию, которая работает следующим образом R func:

proxy::simil(method = "cosine", by_rows = FALSE) 

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

Аналогичное описание функции (R)

Ошибка Python из-за NaN

UPD . Я также пытался удалить NaNs в каждой паре строк в цикле, используя cosine func из scipy.spatial.distance. Это дает тот же результат, что и в R, но работает в возрасте: (

Ответы [ 3 ]

0 голосов
/ 18 января 2019

Вы можете попробовать этот подход: https://github.com/Midnighter/nadist, в качестве альтернативы вы можете использовать _chk_weights с nan_screen=True, как описано здесь в метапертуре здесь https://github.com/scipy/scipy/issues/3870, надеюсь, что это поможет.

Я обнаружил, что Midnighter ранее сообщал о той же проблеме в stackoverflow: Вычисляет попарно расстояние в scipy с отсутствующими значениями . Там есть некоторые другие решения, но, поскольку он перешел к его цитонизации, держу пари, что они были не лучшими.

0 голосов
/ 21 января 2019

Я решил проблему, создав маску (логический массив, указывающий, какие значения отсутствуют) и вычислив попарно косинусные расстояния между векторами строк матрицы. В результате я получил длинный вектор сходств, который я затем развернул, чтобы получить матрицу сходства

0 голосов
/ 17 января 2019

Вы можете поменять NaN на 0 и попробовать вычислить косинусное сходство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...