相似度计算——欧式距离

欧式距离介绍

欧式距离是最常见的一种距离度量方式,欧氏距离(Euclidean Distance)也称欧几里得距离,指在多维空间中两个点之间的绝对距离。这个距离基于我们熟悉的勾股定理,也就是求解三角形的斜边。简单的来说,欧氏距离就是两点之间的实际距离。

欧式距离计算

在二维空间下欧式距离的计算公式

二维平面上两点 <math xmlns="http://www.w3.org/1998/Math/MathML"> a ( x 1 , y 1 ) a(x_1,y_1) </math>a(x1,y1)与 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( x 2 , y 2 ) b(x_2,y_2) </math>b(x2,y2)间的欧氏距离,也就是我们小学里学的勾三股四弦五------勾股定理,计算公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> d ( a , b ) = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d(a,b)=\sqrt[]{(x_1-x_2)^2+(y_1-y_2)^2} </math>d(a,b)=(x1−x2)2+(y1−y2)2

在 <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n维空间中欧式距离计算公式

<math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n维空间中的点x和y的坐标分别为: <math xmlns="http://www.w3.org/1998/Math/MathML"> x = ( x 1 , x 2 , . . . , x n ) x=(x_1,x_2,...,x_n) </math>x=(x1,x2,...,xn), <math xmlns="http://www.w3.org/1998/Math/MathML"> y = ( y 1 , y 2 , . . . , y n ) y=(y_1,y_2,...,y_n) </math>y=(y1,y2,...,yn),则点x和点y之间的欧式距离计算公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> d ( x , y ) = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + . . . + ( x n − y n ) 2 = ∑ i = 1 n ( x i − y i ) 2 d(x,y)=\sqrt[]{(x_1-y_1)^2+(x_2-y_2)^2+...+(x_n-y_n)^2}=\sqrt[]{\sum_{i=1}^{n}(x_i-y_i)^2 } </math>d(x,y)=(x1−y1)2+(x2−y2)2+...+(xn−yn)2 =i=1∑n(xi−yi)2

<math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n维向量之间的欧式距离计算公式

两个 <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n维向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> a ( x 11 , x 12 , . . . , x 1 n ) a(x_{11},x_{12},...,x_{1n}) </math>a(x11,x12,...,x1n)和向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> a ( x 21 , x 22 , . . . , x 2 n ) a(x_{21},x_{22},...,x_{2n}) </math>a(x21,x22,...,x2n)之间的欧式距离计算公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> d 12 = ∑ k = 1 n ( x 1 k − x 2 k ) 2 d_{12}=\sqrt[]{\sum_{k=1}^{n}(x_{1k}-x_{2k})^2 } </math>d12=k=1∑n(x1k−x2k)2

欧式距离计算实现

用Python实现欧式距离计算时,可以使用numpy.linalg.norm()函数来计算欧式距离,示例代码如下:

python 复制代码
import numpy as np

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])

euclidean_distance = np.linalg.norm(x - y)
print(euclidean_distance)
  • 补充解释:linalg.norm()是NumPy库中用于计算向量或矩阵的范数(或长度)的函数。在计算欧式距离时,可以用来计算向量之间的差异。如下实例代码计算单个向量的范数:
python 复制代码
import numpy as np

# 计算向量的范数
x = np.array([1, 2, 3])
norm_x = np.linalg.norm(x)
print(norm_x)

欧式距离的相似度计算应用

欧式距离在聚类分析、机器学习、推荐系统和图像识别等领域中的相似度计算有应用。

  • 如在聚类分析中,欧式距离可以用来衡量数据点之间的相似度,依据欧式距离将数据点分组成簇。
  • 又如在机器学习中,欧式距离被用来计算特征向量之间的相似度。
    • 譬如在K近邻算法中就是使用欧式距离来衡量样本之间的距离。
  • 在图像识别中,欧式距离可以用来比较图像之间的相似度,从而实现图像的匹配和识别。

应用实例说明

假设有一组学生的数据,包括学生的数学和语文成绩,现在我们想要计算学生之间的相似度,那么需要怎么去计算呢?

既然本文章说的是欧式距离在相似度计算的应用,那么我们肯定就可以用欧式距离来衡量每对学生之间的成绩差异,从而找出成绩较为接近的学生。

假设有两个学生A和B,他们的数学和语文成绩分别为(A1, A2)和(B1, B2),则可以通过计算欧式距离来衡量他们之间的相似度,距离越小表示他们的成绩越接近,距离越大表示他们的成绩差异越大。

通过这种方法,我们可以找出成绩相似的学生,由此可以进行下一步的分析和比较。

相关推荐
她说彩礼65万12 分钟前
Asp.net core appsettings.json` 和 `appsettings.Development.json`文件区别
后端·json·asp.net
用户214118326360218 分钟前
国产化算力实战:手把手教你在魔乐社区用华为昇腾 NPU 跑通模型推理
后端
IT_陈寒18 分钟前
SpringBoot性能飞跃:5个关键优化让你的应用吞吐量提升300%
前端·人工智能·后端
M1A120 分钟前
你的认知模式,决定了你的人生高度
后端
追逐时光者1 小时前
Everything替代工具,一款基于 .NET 开源免费、高效且用户友好文件搜索工具!
后端·.net
爱学习的小鱼gogo1 小时前
python 矩阵中寻找就接近的目标值 (矩阵-中等)含源码(八)
开发语言·经验分享·python·算法·职场和发展·矩阵
红纸2811 小时前
Subword算法之WordPiece、Unigram与SentencePiece
人工智能·python·深度学习·神经网络·算法·机器学习·自然语言处理
QX_hao1 小时前
【Go】--数据类型
开发语言·后端·golang
桦说编程1 小时前
线程池拒绝策略避坑:谨慎使用抛弃策略,可能导致系统卡死
java·后端
BingoGo2 小时前
PHP 15 个高效开发的小技巧
后端·php