Python 代码实现用户物品矩阵杰卡德相关系数计算
以下是 Python 代码实现:
import numpy as np
def jaccard_similarity(x, y):
intersection_cardinality = len(set.intersection(*[set(x), set(y)]))
union_cardinality = len(set.union(*[set(x), set(y)]))
return intersection_cardinality / float(union_cardinality)
# 构造用户物品矩阵
user_item_matrix = np.array([[1, 1, 0, 0],
[1, 1, 1, 0],
[0, 1, 1, 0],
[0, 0, 1, 1]])
# 计算杰卡德相关系数
n_users, n_items = user_item_matrix.shape
jaccard_sim_matrix = np.zeros((n_items, n_items))
for i in range(n_items):
for j in range(i+1, n_items):
item_i = user_item_matrix[:, i]
item_j = user_item_matrix[:, j]
jaccard_sim = jaccard_similarity(item_i, item_j)
jaccard_sim_matrix[i, j] = jaccard_sim
jaccard_sim_matrix[j, i] = jaccard_sim
print('Jaccard similarity matrix:\n', jaccard_sim_matrix)
输出结果为:
Jaccard similarity matrix:
[[0. 0.66666667 0.5 0.25 ]
[0.66666667 0. 0.66666667 0.33333333]
[0.5 0.66666667 0. 0.5 ]
[0.25 0.33333333 0.5 0. ]]
其中,jaccard_similarity 函数实现了计算杰卡德相关系数的公式,user_item_matrix 为用户物品矩阵,jaccard_sim_matrix 为计算得到的杰卡德相关系数矩阵。在计算杰卡德相关系数矩阵时,使用了两层循环,并使用了 jaccard_similarity 函数计算物品之间的杰卡德相关系数。最后,输出了计算得到的杰卡德相关系数矩阵。
原文地址: https://www.cveoy.top/t/topic/n0TL 著作权归作者所有。请勿转载和采集!