我想计算购买数据集产品之间的余弦相似度。我有超过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)。
有没有办法解决这个问题并计算余弦相似度?
答案 0 :(得分:0)
由于csr_matrix
支持项目索引编制,因此您可以使用以下一种衬纸将大于1的所有内容都转换为
X[X > 1] = 1