如下所示,我的数据框包含以下列
总用户:75541因此总用户对:2853183570
我可以在.apply()方法中完成,但这需要花费很多时间。有没有一种技术可以更快地完成它?
答案 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
。