【数据挖掘 | 相关性分析】Jaccard相似系数详解、关于集合的相关性(详细案例、附完详细代码实现和实操、学习资源)

news2024/11/22 10:18:28

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍

在这里插入图片描述

【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (一)
作者: 计算机魔术师
版本: 1.0 ( 2023.8.27 )

摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

Jaccard相似系数(Jaccard Coefficient)

Jaccard相似系数(Jaccard Coefficient)主要用于计算符号度量或布尔值度量的个体间的相似度(一般用于解决非对称二元的相关性问题),无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。Jaccard系数等于样本集交集与样本集合集的比值,可以用于计算两个集合的相似性,无论这些集合是文档、用户的兴趣爱好或任何其他类型的集合。(Tanimoto系数(广义Jaccard相似系数)则可以计算实值)

Jaccard相似系数的定义是,两个集合的交集的大小除以它们的并集的大小。如果记两个集合分别为A和B,交集为A∩B, 并集为A∪B,那么Jaccard相似系数J(A, B)可以表示为:

J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B) = \frac{{|A \cap B|}}{{|A \cup B|}} J(A,B)=ABAB

其中,|A|表示集合A的大小(元素个数)。Jaccard相似系数的取值范围在0到1之间,值越接近1表示两个集合越相似,值越接近0表示两个集合越不相似。

下面我们将详细推导Jaccard相似系数的数学公式:

假设集合A有n个元素,集合B有m个元素,交集A∩B有k个元素。

  1. 计算交集的大小 |A∩B|:
    该步骤不需要推导,直接使用给定的数据即可。

  2. 计算并集的大小 |A∪B|:
    根据集合的定义,可以得到并集的大小为两个集合的元素个数之和减去交集的大小:
    ∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ = n + m − k |A \cup B| = |A| + |B| - |A \cap B| = n + m - k AB=A+BAB=n+mk

  3. 计算Jaccard相似系数 J(A, B):
    将步骤1和步骤2的结果代入公式得到:
    J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ = k n + m − k J(A, B) = \frac{{|A \cap B|}}{{|A \cup B|}} = \frac{k}{{n + m - k}} J(A,B)=ABAB=n+mkk

我们以二进制数据的列联表举例
在这里插入图片描述

计算:假设样本A和样本B是两个n维向量,而且所有维度的取值都是0或1。例如,A(0,1,1,0)和B(1,0,1,1)。我们将样本看成一个集合,1表示集合包含该元素,0表示集合不包含该元素。

q:样本A与B都是1的维度的个数

s:样本A是1而B是0的维度的个数

r:样本A是0而B是1的维度的个数

t:样本A与B都是0的维度的个数

对称二元变量的距离测度:

image-20231217165755353在这里插入图片描述

非对称二元变量的距离测度:

image-20231217165803411在这里插入图片描述

Jaccard系数(非对称二元变量的相似性度量):

image-20231217165725965在这里插入图片描述

即:

image-20231217165822220 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/aebf2157e64d476186092bf291d5f1ea.png)

其中我们可以发现 d ( i , j ) d(i,j) d(i,j)为相异性 , s i m ( i , j ) sim(i,j) sim(i,j)为相似性, 符合公式

1 − d ( i , j ) = s i m ( i , j ) 1- d(i,j) = sim(i,j) 1di,j)=sim(i,j)

以下是一个具体的例子,可以动手算算
在这里插入图片描述

image-20231217170228510

接下来,我将给出一个使用Python库(sklearn)加载数据并计算Jaccard相似系数的示例代码:

from sklearn.metrics import jaccard_score

# 定义两个集合的列表表示
A = [1, 2, 3, 4, 5]
B = [4, 5, 6, 7, 8]

# 使用sklearn中的jaccard_score函数计算Jaccard相似系数
jaccard_coefficient = jaccard_score(A, B)

print("Jaccard相似系数:", jaccard_coefficient)

这里使用了sklearn.metrics模块中的jaccard_score函数来计算Jaccard相似系数。输入参数AB是两个集合的列表表示,函数会返回计算得到的Jaccard相似系数。

此外,如果你想手动实现Jaccard相似系数的计算,以下是一个不使用库的示例代码:

def jaccard_similarity(A, B):
    intersection = len(set(A) & set(B))
    union = len(set(A) | set(B))
    jaccard_coefficient = intersection / union
    return jaccard_coefficient

# 定义两个集合的列表表示
A = [1, 2, 3, 4, 5]
B = [4, 5, 6, 7, 8]

# 计算Jaccard相似系数
jaccard_coefficient = jaccard_similarity(A, B)

print("Jaccard相似系数:", jaccard_coefficient)

这段代码定义了一个名为jaccard_similarity的函数,接受两个集合的列表表示作为参数,并返回Jaccard相似系数的计算结果。

关于Jaccard相似系数的学习资源,你可以参考以下链接-

  • Jaccard index - Wikipedia

  • Jaccard Similarity and Jaccard Distance

  • Measuring Similarity or Dissimilarity Between Sets

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1317757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《opencv实用探索·二十》点追踪技术

前言: 在学习点追踪技术前需要先了解下光流发追踪目标,可以看上一章内容:光流法检测运动目标 如果以光流的方式追踪目标,基本上我们可以通过goodFeaturesToTrack函数计算一系列特征点,然后通过Lucas-Kanade算法进行一…

Java智慧工地源码,智慧工地管理平台的技术架构和工作原理

智慧工地管理平台是将互联网的理念和技术引入建筑工地,从施工现场源头抓起,最大程度的收集人员、安全、环境、材料等关键业务数据,依托物联网、互联网,建立云端大数据管理平台,形成“端云大数据”的业务体系和新的管理…

考虑使用自定义的序列化形式

在Java中,有时候我们可能需要考虑使用自定义的序列化形式,以满足特定的需求或优化序列化过程。这通常涉及到实现Serializable接口的类,并自定义writeObject和readObject方法。以下是一个简单的例子,演示了如何使用自定义的序列化形…

货物数据处理pandas版

1求和 from openpyxl import load_workbook import pandas as pddef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(fHi, {name}) # Press CtrlF8 to toggle the breakpoint.# Press the green button in the gutter to run the scr…

vue中2种取值的方式

1.url是这种方式的:http://localhost:3000/user/1 取得参数的方式为:this.$route.params.id 2.url为get方式用?拼接参数的:http://localhost:3000/user?phone131121123&companyId2ahttp://localhost:3000/ 取得参数值的方式…

HTTP代理神器Fiddler的配置

HTTP代理神器Fiddler Fiddler的简介 Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 。它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据&#…

不是生活有意思,是你热爱生活它才有意思

明制汉服的设计 同样是一款很重工的外套 细节上也是做到了极致 顺毛毛呢面料 领口袖口拼接仿貂毛环保毛条 前胸欧根纱刺绣圆形布 袖子贴民族风珠片刺绣织带 门襟搭配金属子母扣,真盘扣设计 时尚经典,搭配马面裙孩子穿上 真的很有气质奢华富贵 …

Android hwcomposer服务启动流程

Android hwcomposer服务启动流程 客户端 binder远程调用 服务端 surfaceflinger --binder--> hwcomposer .hal文件编译时生成支持binder进程间远程调用通信的cpp文件 在out/soong/.intermediates/hardware/interfaces/graphics/composer/2.1/ 目录下找…

时序预测 | Python实现GRU电力需求预测

时序预测 | Python实现GRU电力需求预测 目录 时序预测 | Python实现GRU电力需求预测预测效果基本描述程序设计参考资料预测效果 基本描述 该数据集因其每小时的用电量数据以及 TSO 对消耗和定价的相应预测而值得注意,从而可以将预期预测与当前最先进的行业预测进行比较。使用该…

【如何提取React项目中的公共模块,多个项目共用】

文章目录 目录 前言 一、创建公共模块 二、初始化公共模块 三、给公共模块添加内容 四、添加对公共模块的依赖 五、使用公共模块里的资源 后记 前言 在工作中经常会遇到这样的需求,有个React项目,代码分为客户端,管理端两份&#xff…

04 python函数

4.1 函数的快速开发体验 """ 演示,快速体验函数的开发和使用 """#需求,统计字符串的长度,不使用内置函数len()str1 itheima str2 itcast str3 python#定义一个计数的变量 count 0 for i in str1:count 1…

【高级网络程序设计】Block1总结

这一个Block分为四个部分,第一部分是Introduction to Threads and Concurrency ,第二部分是Interruptting and Terminating a Thread,第三部分是Keep Threads safety:the volatile variable and locks,第四部分是Beyon…

RabbitMQ不公平分发问题分析及问题解决

1.不公平分发 1.1 不公平分发策略是什么? 在 RabbitMQ 中,不公平分发(Unfair Dispatch)是指当多个消费者(Consumers)同时订阅同一个队列(Queue)时,消息的分发机制是不公…

把文化注入品牌,五粮液荣获“全国企业文化优秀成果特等奖”

执笔 | 萧 萧 编辑 | 扬 灵 12月15日,以“塑造优秀企业文化,凝聚企业发展力量”为主题的全国企业文化年会(2023)首次在长江首城、中国酒都、中国动力电池之都宜宾盛大举行。 凭借“弘扬和美文化,谱写高质量发展新篇章”成果…

2018年AMC8数学竞赛真题的典型考点和详细解析

从战争中学习战争最有效。前几天,六分成长分析了2023年、2022年、2020、2019年的AMC8的典型考题、考点和详细答案解析。今天继续为大家分享2018年的AMC8的五道典型考题。 欢迎您查看历史文章了解之前各年的真题解析,本系列会持续更新,直到大家…

Linux:进程地址空间

目录 1.程序地址空间 2.进程地址空间 1.程序地址空间 我们在讲C/C语言的时候,32位平台下,我们见过这样的空间布局图 我们来验证一下这张图的正确性: int un_gval;int init_gval100;int main(int argc, char* argv[],char* env[]){//代码…

Nat. Mach. Intell. | 通过深度神经网络联合建模多个切片来构建一个三维全生物体空间图谱

今天为大家介绍的是来自Angela Ruohao Wu 和Can Yang团队的一篇论文。空间转录组学(ST)技术正在革新探索组织空间结构的方式。目前,ST数据分析通常局限于单个二维(2D)组织切片,这限制了我们理解在三维&…

【ArkTS】入门

代码结构分析 struct Index{ } 「自定义组件:可复用的UI单元」 xxx 「装饰器:用来装饰类结构、方法、变量」 Entry 标记当前组件是入口组件(该组件可被独立访问,通俗来讲:它自己就是一个页面)Component 用…

【后端学前端】第四天 css动画 垂直轮播效果(css变量、位移缩放动画、动画延迟)

1、学习信息 视频地址&#xff1a;css动画 垂直轮播效果&#xff08;css变量、位移缩放动画、动画延迟&#xff09;_哔哩哔哩_bilibili 2、源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title…

QT for Android安卓编译环境搭建+首次编译3个大坑

1、安装 编译环境能否搭建成功&#xff0c;主要是看各个依赖软件的版本是否匹配。依赖的软件有3个&#xff1a;JDK、安卓SDK、安卓NDK。 我的qt版本是5.14.1&#xff0c;我亲测以下版本可以成功让编译安卓&#xff1a; QT5.14 JDK1.8.0 安卓SDK26.1 安卓NDK20.1 在QT-&g…