from scipy.spatial import distance
distance.euclidean([1,2],[2,1])
#1.4142135623730951
先将数据标准化
(减去的均值两两抵消)
又称为城市街区距离
from scipy.spatial import distance
distance.cityblock([1,2],[2,1])
#2
也称为棋盘距离,因为它是两个实值向量之间任意维度上的最大距离
等价形式
from scipy.spatial import distance
distance.chebyshev([1,2],[2,1])
#1
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
from scipy.spatial import distance
distance.minkowski([1,2],[2,1],4)
#1.189207115002721
from scipy.spatial import distance
distance.cosine([1,2],[2,1])
#0.19999999999999996
两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数
例如字符串“1111”与“1001”之间的汉明距离为2。
对向量按元素进行比较,并对差异的数量进行平均
如果两个向量相同,得到的距离是0之间,如果两个向量完全不同,得到的距离是1
from scipy.spatial import distance
distance.hamming([1,2],[2,1])
# 1
# 第一个元素和第二个元素都不同,所以汉明距离为(1+1)/2=1
distance.hamming([1,2],[1,1])
#0.5
#(1+0)/2=0.5
from scipy.spatial import distance
distance.jaccard([1,2],[2,1])
#1
distance.jaccard([1,1],[2,1])
#0.5
from sklearn.metrics.pairwise import haversine_distances
haversine_distances([[1,2],[2,1]])
'''
array([[0. , 0.87152123],
[0.87152123, 0. ]])
'''
参考内容:机器学习中的相似性度量总结 (qq.com)