特征计算 - Jaccard 相似系数与 Python 代码实现

本文介绍了Jaccard相似系数的概念,它用于衡量样本集的相似性。系数值越大,相似度越高。同时,文章还讨论了Jaccard距离,并提供了Python代码示例来计算两者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jaccard 相似系数又称为Jaccard相似性度量(Jaccard系数,Jaccard 指数,Jaccard index)。用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。定义为相交的大小除以样本集合的大小:

(若A B均为空,那么定义J(A,B)= 1)

与 Jaccard 相似系数相对的指标是Jaccard 距离(Jaccard distance),定义为 1- Jaccard系数,即:

Python 代码:

data_school_list = data['school'].unique().tolist() #school列表
edu_similar=[]
l = len(data_school_list)#定义循环次数
for i in data_school_list:
    try:
        print(l)#显示当前计算的进度
        Jaccard_list = []#建立一个空白列表,用于存储Jaccar系数
        true_id = data.loc[data['school'] == i,'id'].tolist() #id列表
       
### 计算Jaccard相似系数 #### 定义公式 Jaccard 相似系数是用于衡量两个集合相似度的统计量。其定义为两个集合 \( A \) 和 \( B \) 的交集大小除以它们并集的大小[^3]: \[ J(A, B) = \frac{|A \cap B|}{|A \cup B|} \] 其中: - \( |A \cap B| \) 表示集合 \( A \) 和 \( B \) 的交集中元素的数量。 - \( |A \cup B| \) 表示集合 \( A \) 和 \( B \) 并集中元素的数量。 如果两个集合完全相同,则 Jaccard 相似系数等于 1;如果两个集合没有任何共同元素,则 Jaccard 相似系数等于 0。 #### 示例说明 假设有两个集合 \( A = \{a, b, c\} \) 和 \( B = \{b, c, d\} \),则可以按照如下方式计算 Jaccard 相似系数- 集合 \( A \) 和 \( B \) 的交集为 \( \{b, c\} \),即 \( |A \cap B| = 2 \)。 - 集合 \( A \) 和 \( B \) 的并集为 \( \{a, b, c, d\} \),即 \( |A \cup B| = 4 \)。 因此,\( J(A, B) = \frac{2}{4} = 0.5 \)。 #### Python代码实现 以下是使用Python和`sklearn.metrics.jaccard_score`函数来计算Jaccard相似系数的例子[^2]: ```python from sklearn.metrics import jaccard_score def calculate_jaccard_similarity(list_a, list_b): set_a = set(list_a) set_b = set(list_b) intersection = len(set_a.intersection(set_b)) union = len(set_a.union(set_b)) similarity = intersection / union if union != 0 else 0 return similarity # 测试数据 list_A = ['a', 'b', 'c'] list_B = ['b', 'c', 'd'] similarity = calculate_jaccard_similarity(list_A, list_B) print(f"The Jaccard Similarity is {similarity}") ``` 上述代码实现了自定义的Jaccard相似系数计算逻辑,并通过测试数据验证了该功能。对于更复杂的场景或更大规模的数据处理需求,推荐直接调用 `sklearn.metrics.jaccard_score` 函数来进行高效运算。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值