Я хочу вычислить косинусное сходство между продуктами набора данных покупок. У меня более 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 в моей матрице).
Есть ли способ обойти это и вычислить косинусное сходство?