本文介绍Python计算欧式距离和余弦相似度。为了余弦相似度需要使用欧式距离,我们首先介绍欧式距离。

欧式距离

欧式距离标识两个向量之间的距离,计算公式如下:

欧式距离 = Σ(Ai−Bi)2\sqrt{Σ(A_i-B_i)^2}Σ(Ai​−Bi​)2​

python计算欧式距离,可以使用numpy.linalg.norm函数:

# 导入包
import numpy as np
from numpy.linalg import norm# 定义向量
a = np.array([2, 6, 7, 7, 5, 13, 14, 17, 11, 8])
b = np.array([3, 5, 5, 3, 7, 12, 13, 19, 22, 7])# 计算两个向量的欧式距离
norm(a-b)# 12.409673645990857

输出结果显示两个向量的欧式距离为:12.409673645990857

如果两个向量长度不等,函数会产生警告:


import numpy as np
from numpy.linalg import norma = np.array([2, 6, 7, 7, 5, 13, 14])
b = np.array([3, 5, 5, 3, 7, 12, 13, 19, 22, 7])norm(a-b)# 产生错误信息,不能广播
# ValueError: operands could not be broadcast together with shapes (7,) (10,)

也可以针对数据框的列计算欧式距离:


import pandas as pd
import numpy as np
from numpy.linalg import norm# 定义数据框
df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29],'assists': [5, 7, 7, 9, 12, 9, 9, 4],'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})# 在 'points' 和 'assists' 两列之间计算欧式距离
norm(df['points'] - df['assists'])# 40.496913462633174

余弦相似度

余弦相似度用向量空间中两向量夹角的余弦值作为衡量两个向量间差异程度。余弦值越接近1,表明两个向量的夹角越接近0度,则两个向量越相似。

计算公式如下:

余弦相似度=ΣAiBi/(ΣAi2ΣBi2){ ΣA_iB_i /(\sqrt{ΣA_i^2}\sqrt{ΣB_i^2}})ΣAi​Bi​/(ΣAi2​​ΣBi2​​)

下面介绍如何使用NumPy库计算两个向量的余弦相似度。

from numpy import dot
from numpy.linalg import norm# 定义数组
a = [23, 34, 44, 45, 42, 27, 33, 34]
b = [17, 18, 22, 26, 26, 29, 31, 30]# 计算余弦相似度
cos_sim = dot(a, b)/(norm(a)*norm(b))cos_sim0.965195008357566

norm函数计算欧式距离,dot计算向量点积。

对于更长数组长度也可以使用该方法:

import numpy as np
from numpy import dot
from numpy.linalg import norm# 定义数组
a = np.random.randint(10, size=100)
b = np.random.randint(10, size=100)# 计算余弦相似度
cos_sim = dot(a, b)/(norm(a)*norm(b))cos_sim0.7340201613960431

最后需要说明的是,如果长度不一致仍会报错。

计算欧式距离和余弦相似度相关推荐

  1. 余弦欧式距离matlab,余弦相似度和欧几里得距离

    1.余弦相似度 同过两个向量的夹角的余弦值来判断两个向量的相似度. 余弦值取值[-1,1],越接近1,两向量夹角越小,越相似. 图片.png 二维公式: 图片.png n维公式: 图片.png 存在的 ...

  2. 百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离

    文章目录 余弦相似度 余弦相似度和余弦距离 和欧式距离的比较和关系 余弦距离不是一个严格定义的距离 在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础 ...

  3. 相似度计算(1)——余弦相似度

    余弦相似度   余弦相似度:用向量空间中两向量夹角的余弦值作为衡量两个个体之间差异的大小.余弦值越接近1,表明两个向量的夹角越接近0度,则两个向量越相似.余弦值越接近0,表明两个向量的夹角越接近180 ...

  4. matlab计算欧式距离代码,欧式距离计算公式

    spark开启推测机制后数据源是kafka,出现重复消费因为 推测机制会在其他机器去启动同一个task,难免会有数据重复消费 自己维护offset提交. 如何用Excel计算欧式距离 计算上边所有的欧 ...

  5. 相似度计算(欧式距离和余弦距离)

    相似度:即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大. 对于多个不同的文本或者短文本对话消息要来计算他们之间的相似度如何,一个好的做法就是将这些文本 ...

  6. 欧式距离、曼哈顿距离、余弦相似度(python代码)

    欧式距离/欧几里得度量(Euclidean Distance) 欧氏距离就是两点之间最短的直线距离. (1)二维空间里A.B两点间的欧式距离: SAB=(xA−xB)2+(yA−yB)2S_{AB}= ...

  7. 计算特征矩阵之间的余弦距离(余弦相似度)

    转自两矩阵各向量余弦相似度计算操作向量化.md - 苏轶然 - 博客园 (cnblogs.com)https://www.cnblogs.com/suanec/p/9121092.html 对A,B矩 ...

  8. 曼哈顿距离,欧式距离,余弦距离

    1.曼哈顿距离 曼哈顿距离,叫出租车距离的.具见上图黄线,应该就能明白. 计算距离最简单的方法是曼哈顿距离.假设,先考虑二维情况,只有两个乐队 x 和 y,用户A的评价为(x1,y1),用户B的评价为 ...

  9. Tricks(三十八)—— 在不计算欧式距离的前提下判断点到两点的距离哪个更近

    假设两点为 M0M_0, M1M_1,则两点的中点为 C=M0+M12C=\frac{M_0+M_1}2,设 M0M_0, M1M_1 连线外一点 XX,此时如何判断点 XX,离 M0M_0, M1M ...

最新文章

  1. 104-string和StringBuilder的区别
  2. w,vmstat,top,sar
  3. source ~/.bashrc 什么意思
  4. 德国院士:“工业4.0”概念升级了,包含人工智能和5G
  5. DHCP租用信息导出方案
  6. 【OpenGL】OpenGL4.3常用指令目录
  7. 公众号开发 单独 给某个用户 推送消息_校区学生会微信公众平台征稿启事
  8. 泛泰A860 Andorid4.4.3 KTU84M (Omni) 图赏
  9. 使用css样式设计一个简单的html登陆界面
  10. 缓和曲线计算方式实现,全站仪中道路数据计算
  11. tif文件在html打开,tif格式怎么打开(打开tif文件的操作方法)
  12. 井字棋(棋子可消去(拿走))
  13. 新人学习java导论
  14. 《SpringBoot框架开发技术整合》笔记(二)
  15. 【AAAI2023】视觉辅助的常识知识获取Visually Grounded Commonsense Knowledge Acquisition 个人学习笔记
  16. 聊天也是技术活:内向性格社交宝典-摘抄
  17. 【大数据处理技术】「#0」实验环境准备
  18. linux运行lnk,LNK 文件扩展名: 它是什么以及如何打开它?
  19. 输入多组字符数组c语言,c语言怎样能连续输入多个一维数组
  20. AI 帮忙找 Bug,英特尔开源代码编程工具ControlFlag

热门文章

  1. 退出导航软件测试,GPS导航软件测试技术(转)
  2. behave 测试框架,了解一下
  3. 没想到吧,360 浏览器要收费了,六大尊享权益,味同嚼蜡,味如鸡肋,如此乏味...
  4. 优秀的技术管理者需要具备哪些能力?
  5. linux服务器挂硬盘无法启动不了怎么办,CentOS 硬盘损坏导致无法启动
  6. bash shell中expr命令下几种的使用
  7. java 方差_使用java计算数组方差和标准差
  8. php图片上传腾讯云cos,ThinkPHP集成腾讯云存储(COS)--详解
  9. max_delay/min_delay和input_delay/output_delay
  10. TrueNAS 挂载 NTFS 移动硬盘做冷备份