下面是一个基于 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录