python实现各类距离

 目前,常见的距离如下:

(1)      Minkowski Distance

(2)      Euclidean Distance

(3)      ManHattan Distance

(4)      Chebyshev Distance

(5)      Cosine

(6)      HammingDistance

(7)      Jaccard Similarity Coefficient

举实例如下:

from numpy import *

vector1 = mat([1,2,3,4])
vector2 = mat([4,5,6,7])
#-----------------------------------------------
print("Euclidean=",sqrt((vector1-vector2)*\
                        ((vector1-vector2).T)))
print("ManHattan=",sum(abs(vector1-vector2)))
print("Chebyshev=",abs(vector1-vector2).max())
#计算夹角余弦
Lv1 = sqrt(vector1*vector1.T)
Lv2 = sqrt(vector2*vector2.T)
cosV12 = vector1*vector2.T/(Lv1*Lv2)
print("Cosine=",cosV12)
#------------------------------------------------
Vector1 = array([1,1,0,1,0,1,0,0,1])
Vector2 = array([0,1,1,0,0,0,1,1,1])
matV = mat([Vector1 ,Vector2])
arrayv=array([Vector1,Vector2])
print("matv",matV,"shape(matv)",shape(matV))
print("arrayv",arrayv,"shape(arrayv",shape(arrayv))
smtr=nonzero(matV[0]-matV[1])
print("Hamming Distance",shape(smtr[0])[0])
print("dist.jaccard:",dist.pdist(matV,'jaccard'))
#------------------------------------------------

猜你喜欢

转载自blog.csdn.net/weixin_42039090/article/details/80695316