一、欧拉距离
欧几里得距离,也叫欧式距离。
应用举例:
1.先画个图:
代码(在jupyter工具中使用):
import numpy as np
import matplotlib.pyplot as pltX = np.array([
[5,1],
[1,4]
])plt.plot(X[:,0], X[:,1],'r-o')
plt.annotate('a', xy=X[0])
plt.annotate('b', xy=X[1])plt.plot([1,5],[1,1],'g--')
plt.plot([1,1],[1,4],'g--')plt.show()
np.sum((X[0]-X[1])**2)**(1/2) # 求欧拉距离
距离 = √[(Xa - Xb)²+(Ya - Yb)²]
2.数学代入计算得:
3.使用numpy方法计算:
二、曼哈顿距离
运算量相较欧拉距离简单一些
三、明可夫斯基距离
p = 1 时,为曼哈顿距离;
p = 2 时,为欧拉距离;
p >2 时,为明可夫斯基距离。
举例:
1.定义求两点距离的函数,X沿用上文数组
def distance(a, b, p=2):
return np.sum(np.abs(a-b)**p)**(1/p)
2.求欧拉距离
distance(X[0],X[1]) # 欧拉距离
3.求曼哈顿距离
distance(X[0],X[1],p=1) # 曼哈顿距离
4.多特征值数组求其距离
# 生成一个多特征数组
X = np.array([
[5,1,11,6],
[1,4,43,99]
])