【Educoder数据挖掘实训】用广义Jaccard系数计算相似度

【Educoder数据挖掘实训】用广义Jaccard系数计算相似度

开挖!!!!

相似度就是比较两个事物的相似性。一般通过计算事物的特征之间的距离,如果距离小,那么相似度大;如果距离大,那么相似度小。比如两种水果,将从颜色,大小,维生素含量等特征进行比较相似性。
这里的相似度有点类似于我们之前提到过用值域法筛选异常值时候的参数,当然还是有很大区别的。

首先介绍 J a c c a r d Jaccard Jaccard系数。
对于两个特征向量 A , B A,B A,B,定义 F x y F_{xy} Fxy为同位置下 A A A x x x B B B y y y的数量。
定义 A B AB AB的相似度 s = F 00 + F 11 F 00 + F 01 + F 10 + F 11 s = \frac{F_{00}+F_{11}}{F_{00}+F_{01}+F_{10}+F_{11}} s=F00+F01+F10+F11F00+F11
对于集合来讲,两个集合 x , y x,y x,y的相似度 s = ∣ x ∩ y ∣ ∣ x ∪ y ∣ s = \frac{|x\cap y|}{|x \cup y|} s=xyxy

对于广义 J a c c a r d Jaccard Jaccard系数,其不同点在于可能不止二值,可能是整数集或者实数集。
那么我们定义为 E j ( x , y ) = x y ∣ ∣ x ∣ ∣ 2 + ∣ ∣ y ∣ ∣ 2 − x y E_j(x,y) = \frac{xy}{||x||^2+||y||^2-xy} Ej(x,y)=∣∣x2+∣∣y2xyxy

代码实现就比较容易了

###-----------编写代码实现广义Jaccard系数的计算----------
def sim_tonimoto(user1, user2):
    common = 0

    #1.判断有没有相同的数据, 没有相同数据则返回0
    ################# Begin #################
    for i in user1 :
        if i in user2 :
            common += 1
    ################# End #################
    if common == 0:
        return 0

    common_num = common
    user1_num = len(user1)
    user2_num = len(user2)


    #2.广义Jaccard系数计算
    ################# Begin #################

    res = common_num / (user1_num + user2_num - common_num)

    ################# End #################

    return res

a = [10,20,30] #输入数据1
b = [10,0,30] #输入数据2

#3.调用自己实现的sim_tonimoto函数
################# Begin #################
result = sim_tonimoto(a, b)

################# End #################
print(result) #输出相似度

相关推荐

  1. Educoder数据挖掘Cosine计算相似

    2024-03-14 05:38:08       19 阅读
  2. Educoder数据挖掘相似与相异

    2024-03-14 05:38:08       16 阅读
  3. Educoder数据挖掘】冗余值的处理

    2024-03-14 05:38:08       21 阅读
  4. 数据相似计算

    2024-03-14 05:38:08       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 05:38:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 05:38:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 05:38:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 05:38:08       20 阅读

热门阅读

  1. 在阿里云上配置开放端口的详细教程

    2024-03-14 05:38:08       22 阅读
  2. 基于qt和css的MP3音乐播放器引擎开发

    2024-03-14 05:38:08       18 阅读
  3. 分布式ID(8):分布式ID生成方法

    2024-03-14 05:38:08       25 阅读
  4. .NET中使用Redis大全

    2024-03-14 05:38:08       21 阅读
  5. volatile关键字用处和场景?

    2024-03-14 05:38:08       20 阅读
  6. 17 OpenCv Canny算子

    2024-03-14 05:38:08       17 阅读
  7. HiveQL详解

    2024-03-14 05:38:08       19 阅读
  8. 视频测试示例

    2024-03-14 05:38:08       14 阅读
  9. 什么是池架构?

    2024-03-14 05:38:08       17 阅读
  10. OpenCV加载视频

    2024-03-14 05:38:08       20 阅读
  11. AI大语言模型GPT & R 生态环境领域数据统计分析

    2024-03-14 05:38:08       21 阅读
  12. 软考笔记--层次式架构之数据访问层设计

    2024-03-14 05:38:08       17 阅读
  13. 浅谈Spring Cloud Ribbon原理及其使用方法

    2024-03-14 05:38:08       19 阅读
  14. 在组件上使用v-model

    2024-03-14 05:38:08       18 阅读