转换嵌套循环以更快地计算稀疏矩阵的调整后的余弦相似度

时间:2017-09-10 10:31:44

标签: python pandas numpy data-analysis

我有以下函数来计算调整后的余弦相似度。它需要两个numpy矩阵。平均中心评级矩阵具有大小22000 users x 503 items,并且相似性矩阵是大小为22000 x 22000的空矩阵,因为它是用户与用户的相似性。计算相似度需要数小时。如何让它运行得更快?

def adjusted_cosine_similarity(ratings_centered_matrix, similarity_matrix): 
    for x in range(0, ratings_centered_matrix.shape[0]):  # get index of array
        for y in range(0, ratings_centered_matrix.shape[0]):
            s = np.sum(ratings_centered_matrix[x, :] * ratings_centered_matrix[y, :]
            si = np.sqrt(np.sum(ratings_centered_matrix[x, :] ** 2))
            sj = np.sqrt(np.sum(ratings_centered_matrix[y, :] ** 2))
            sim = s / (si * sj)
            similarity_matrix[x, y] = round(sim, 2)
            similarity_matrix[x, y] = sim

0 个答案:

没有答案