我有以下函数来计算调整后的余弦相似度。它需要两个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