在没有矩阵的情况下使用Coo_matrix到csr_matrix重复的总和来计算余弦相似度

时间:2018-09-05 14:52:43

标签: python scipy sparse-matrix cosine-similarity

我想计算购买数据集产品之间的余弦相似度。我有超过100000行(row =用户购买事件)和超过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 :(得分:0)

由于csr_matrix支持项目索引编制,因此您可以使用以下一种衬纸将大于1的所有内容都转换为

X[X > 1] = 1