1、余弦距离:
描述:余弦夹角也可以叫余弦相似度。几何中夹角余弦可用来衡量两个向量方向的差异,机 器学习中借用这一概念来衡量向量样本之间的差异。余弦的取值范围[-1,1],求的两个向量 的夹角并得出夹角对应的余弦值,次余弦值就可以用来表征这两个向量的相似性。夹角越小, 趋近于零度,余弦值越接近于 1,方向也就更吻合。反之,夹角越大,余弦值越接近于-1.特 别的:余弦值为 0 两向量垂直。可以看出,余弦相似度只与方向有关。
公式:
在二维空间中向量 A(x1,y1),B(x2,y2)的夹角余弦公式为:
程序实现:
1 importnumpy as np2 from scipy.spatial.distance importpdist3 from numpy import *
4
5 #余弦距离
6 defcosDistance():7 vec1 = [1,2,3,4]8 vec2 = [5,6,7,8]9
10 print("vec1 =",vec1)11 print("vec2 =",vec2)12
13 #方法一:根据公式
14 dist1 = np.dot(vec1,vec2) / (np.linalg.norm(vec1) *np.linalg.norm(vec2))15 print ("余弦测试结果 dist1 ="+str(dist1))16
17 #方法二:根据scipy库求解
18 Vec =np.vstack([vec1,vec2])19 dist2 = 1 - pdist(Vec,'cosine')20 print("余弦测试结果 dist2 ="+str(dist2))
2、欧氏距离:
描述:欧里几得距离或欧几里得度量是空间两个点的直线距离。较早的文献称毕达哥拉斯度 量。
公式:
推倒到n维向量:
程序实现:
1 importnumpy as np2 from scipy.spatial.distance importpdist3 from numpy import *
4 #欧几里得距离
5 defoljdDistance():6 vec1 = np.mat([1