好的网站开发自学网站,网站开发工具排行,asp网站模板免费下载,wordpress 注册表单常见的距离有曼哈顿距离、欧式距离、切比雪夫距离、闵可夫斯基距离、汉明距离、余弦距离等#xff0c;用Python实现计算的方式有多种#xff0c;可以直接构造公式计算#xff0c;也可以利用内置线性代数函数计算#xff0c;还可以利用scipy库计算。
1.曼哈顿距离
也叫城市…常见的距离有曼哈顿距离、欧式距离、切比雪夫距离、闵可夫斯基距离、汉明距离、余弦距离等用Python实现计算的方式有多种可以直接构造公式计算也可以利用内置线性代数函数计算还可以利用scipy库计算。
1.曼哈顿距离
也叫城市街区距离是两点差向量的L1范数也就是各元素的绝对值之和。A(x1,x2,…,xn)和B(y1,y2,…,yn)之间的曼哈顿距离表示为 d ∑ i 1 n ∣ x i − y i ∣ d\sum_{i1}^{n}{\left| x_i-y_i \right|} di1∑n∣xi−yi∣
Python实现
import numpy as np
from scipy.spatial import distanceA np.array([1,2,3])
B np.array([4,5,6])# 方式一直接构造公式计算
dist1 np.sum(np.abs(A-B))# 方式二内置线性代数函数计算
dist2 np.linalg.norm(A-B,ord1) #ord为范数类型取值1一范数,2二范数,np.inf无穷范数默认2。# 方式三scipy库计算
dist3 distance.cityblock(A,B)
2.欧式距离
是一种最常见的距离也就是两点差向量的L2范数。A(x1,x2,…,xn)和B(y1,y2,…,yn)之间的欧式距离表示为 d ∑ i 1 n ( x i − y i ) 2 d\sqrt{\sum_{i1}^{n}{\left( x_i-y_i \right)^{2}}} di1∑n(xi−yi)2
Python实现
import numpy as np
from scipy.spatial import distanceA np.array([1,2,3])
B np.array([4,5,6])# 方式一直接构造公式计算
dist1 np.sqrt(np.sum((A-B)**2))# 方式二内置线性代数函数计算
dist2 np.linalg.norm(A-B,ord2)# 方式三scipy库计算
dist3 distance.euclidean(A,B)
3.切比雪夫距离
最大的维度内距离是两点差向量的无穷范数。A(x1,x2,…,xn)和B(y1,y2,…,yn)之间的切比雪夫距离表示为 d m a x ( ∣ x i − y i ∣ ) dmax\left( \left| x_i-y_i \right| \right) dmax(∣xi−yi∣) Python实现
import numpy as np
from scipy.spatial import distanceA np.array([1,2,3])
B np.array([4,5,6])# 方式一直接构造公式计算
dist1 np.max(np.abs(A-B))# 方式二内置线性代数函数计算
dist2 np.linalg.norm(A-B,ordnp.inf)# 方式三scipy库计算
dist3 distance.chebyshev(A,B)4. 闵可夫斯基距离
是一种范式距离的统称可表示为两点差向量的Lp范数。A(x1,x2,…,xn)和B(y1,y2,…,yn)之间的闵可夫斯基距离表示为 d ∑ i 1 n ∣ x i − y i ∣ p p d\sqrt[p]{\sum_{i1}^{n}{\left| x_i-y_i \right|^{p}}} dpi1∑n∣xi−yi∣p Python实现
import numpy as np
from scipy.spatial import distanceA np.array([1,2,3])
B np.array([4,5,6])# 方式一内置线性代数函数计算
dist1 np.linalg.norm(A-B,ord3) # np.linalg.norm(A-B,ordp)# 方式二scipy库计算
dist2 distance.minkowski(A,B,3) # distance.minkowski(A,B,p)
5.汉明距离
衡量两个字符串之间的差异程度对两个对象的向量元素逐个比较差异的个数占总个数的比例。A(x1,x2,…,xn)和B(y1,y2,…,yn)之间的汉明距离表示为 d 1 n ∑ i 1 n I ( x i ≠ y i ) d\frac{1}{n}\sum_{i1}^{n}{I\left( x_i\ne y_i \right)} dn1i1∑nI(xiyi) 其中I为指示函数 I { 1 i f ( x i ≠ y i ) 0 i f ( x i y i ) \begin{equation} I \left\{ \begin{array}{lr} 1 \quad if\left( x_i\ne y_i \right)\\ 0 \quad if\left( x_i y_i\right) \end{array} \right. \end{equation} I{1if(xiyi)0if(xiyi) Python实现
import numpy as np
from scipy.spatial import distanceA np.array([1,2,3])
B np.array([4,5,6])# 方式一scipy库计算
dist1 distance.hamming(A,B)6.余弦距离
也叫余弦相似度是两点空间向量夹角的余弦值是内积与模积的比值用来衡量两向量间的差异程度。A(x1,x2,…,xn)和B(y1,y2,…,yn)之间的余弦距离表示为 d c o s θ A , B ∣ A ∣ ⋅ ∣ B ∣ ∑ i 1 n x i y i ∑ i 1 n x i 2 ⋅ ∑ i 1 n y i 2 \begin{align} dcos\theta\frac{A,B}{\left| A \right|\cdot\left| B \right|} \\ \frac{\sum_{i1}^{n}{x_iy_i}}{\sqrt{\sum_{i1}^{n}{x_i^{2}}}\cdot\sqrt{\sum_{i1}^{n}{y_i^{2}}}} \end{align} dcosθ∣A∣⋅∣B∣A,B∑i1nxi2 ⋅∑i1nyi2 ∑i1nxiyi Python实现
import numpy as np
from scipy.spatial import distanceA np.array([1,2,3])
B np.array([4,5,6])# 方式一直接构造公式计算
dist1 np.sum(A*B)/(np.sqrt(np.sum(A**2))*np.sqrt(np.sum(B**2)))# 方式二scipy库计算
dist2 1-distance.cosine(A,B)End. 参考 https://blog.csdn.net/lemonbit/article/details/129053257