Рассчитать сходство косинусов без матрицы с дубликатом суммы от coo_matrix до csr_matrix - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу вычислить косинусное сходство между продуктами набора данных покупок. У меня более 100000 строк (строка = событие покупки пользователем) и более 80000 товаров.

Чтобы не использовать pandas.crosstab, чтобы сделать набор данных в формате:

>  user_id\item_id  1  2  3  4  ...   
>       1         | 1  1  0  0
>       2         | 0  1  0  0
>       3         | 1  0  1  0
>       4         | 0  0  0  0
>       5         | 0  0  1  0
>       ...
> 
> Matrix: Whether a user purchased an item or not

Я преобразовал набор данных покупок в scipy.coo_matrix и подумал, что должен затем сделать tocsr(), чтобы выполнить расчеты нормализации и сходства между продуктами, но обнаружил, что когда мы преобразуем coo_matrix в csr_matrix, он суммирует дубликаты (чего я не хочу, мне нужны только 1 и 0 в моей матрице).

Есть ли способ обойти это и вычислить косинусное сходство?

1 Ответ

0 голосов
/ 05 сентября 2018

Поскольку csr_matrix поддерживает индексирование элементов, вы можете использовать следующую строку для преобразования всего, что больше одного, в один

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