计算大数据帧上列中所有对的余弦相似度

时间:2017-11-23 09:11:57

标签: pandas data-science collaborative-filtering

如下所示,我的数据框包含以下列

enter image description here 我打算为所有用户计算用户 - 用户余弦相似度矩阵。

总用户:75541因此总用户对:2853183570

我可以在.apply()方法中完成,但这需要花费很多时间。有没有一种技术可以更快地完成它?

1 个答案:

答案 0 :(得分:0)

看看我刚发现的this answer

使用scipy.sparse.csr_matrix来压缩稀疏矩阵。

然后使用sklearn.metrics.pairwise.cosine_similarity计算cosine_similarity。

或者你可以在下面计算它的使用功能。

def cosine_similarity(matrix):
    norm = pd.DataFrame(np.sqrt(np.square(matrix).sum(axis = 1)))
    denominator = norm.dot(norm.T)
    numerator = matrix.dot(matrix.T)
    similarity_matrix = numerator.divide(denominator,axis =0)
    return similarity_matrix

此函数是所有矩阵计算,不是apply