Python 计算物品之间的杰卡德相似度矩阵
下面是一个基于 Python 的示例代码,可以用来计算物品之间的杰卡德相关系数:
import numpy as np
def jaccard_similarity(item1, item2):
intersection_cardinality = len(set.intersection(*[set(item1), set(item2)]))
union_cardinality = len(set.union(*[set(item1), set(item2)]))
return intersection_cardinality / float(union_cardinality)
def jaccard_similarity_matrix(users_items):
items = list(users_items.values())[0]
matrix = np.zeros((len(items), len(items)))
for i, item1 in enumerate(items):
for j, item2 in enumerate(items):
if i == j:
matrix[i][j] = 1
elif i < j:
matrix[i][j] = jaccard_similarity(users_items[item1], users_items[item2])
matrix[j][i] = matrix[i][j]
return matrix
# Example usage
users_items = {
'user1': ['item1', 'item2', 'item3'],
'user2': ['item3', 'item4'],
'user3': ['item2', 'item4', 'item5']
}
matrix = jaccard_similarity_matrix(users_items)
print(matrix)
在这个示例代码中,'users_items' 是一个字典,其中键是用户 ID,值是该用户拥有的物品列表。'jaccard_similarity()' 函数计算两个物品之间的杰卡德相似度。'jaccard_similarity_matrix()' 函数接受 'users_items' 作为输入,生成一个物品之间的杰卡德相似度矩阵。最后,示例代码输出了一个二维数组,表示物品之间的杰卡德相似度。
原文地址: https://www.cveoy.top/t/topic/n0WW 著作权归作者所有。请勿转载和采集!