本文首发于个人blog:http://booleflow.com/
说明
此处主要使用scipy中的距离计算模块,scipy.spatial.distance
源码在这里
https://github.com/scipy/scipy/blob/v0.17.1/scipy/spatial/distance.py#L606-L634
from scipy.spatial import distance
数值向量距离
布雷柯蒂斯相异度(Bray-Curtis distance)
Bray-Curtis 相异度(Bray-Curtis dissimilarity)是生态学中用来衡量不同样地物种组成差异的测度。由J. Roger Bray and John T. Curtis 提出。其计算基于样本中不同物种组成的数量特征(多度,盖度,重要值等)。计算公式为:
x = [1, 2, 0]
y = [0, 1, 0]
dis = distance.braycurtis(x, y)
print(dis)
0.5
坎贝拉距离(Canberra distance)
Canberra distance是用来衡量两个向量空间的居间,1966年被提出,1977年被G. N. Lance和 W. T. Williams重新提出。是Manhattan distance的加权版本,Canberra distance已被用作比较排名列表和计算机安全中的入侵检测的测量。
x = [1, 2, 0]
y = [0, 1, 0]
dis = distance.canberra(x, y)
print(dis)
1.3333333333333333
切比雪夫距离(Chebyshev distance)
切比雪夫距离(Chebyshev distance)是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。以数学的观点来看,切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量(injective metric space)的一种。计算公式为
下图是国际象棋棋盘上所有位置距f6位置的切比雪夫距离
x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.chebyshev(x, y)
print(dis)
5
曼哈顿距离(Manhattan/cityblock distance)
曼哈顿距离(Manhattan Distance)是由十九世纪的赫尔曼·闵可夫斯基所创词汇,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。曼哈顿距离的命名原因是从规划为方型建筑区块的城市(如曼哈顿)间,最短的行车路径而来(忽略曼哈顿的单向车道以及只存在于3、14大道的斜向车道)。任何往东三区块、往北六区块的的路径一定最少要走九区块,没有其他捷径。计算公式为:
<