详细:
1.闵可夫斯基距离(Minkowski Distance)
2.欧氏距离(Euclidean Distance)
3.曼哈顿距离(Manhattan Distance)
4.切比雪夫距离(Chebyshev Distance)
5.夹角余弦(Cosine)
6.汉明距离(Hamming distance)
7.杰卡德相似系数(Jaccard similarity coefficient)
8.贝叶斯公式
1.闵氏距离的定义:
两个n维变量A(x11,x12,…,x1n)与 B(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
根据变参数的不同,闵氏距离可以表示一类的距离。
np.linalg.norm #是适合使用这个公式
2.欧氏距离(Euclidean Distance)
欧氏距离(L2范数)是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式(如图1.9)。
python实现欧式距离公式的:
vector1 = np.array([1,2,3]) vector2 = np.array([4,5,6]) op1=np.sqrt(np.sum(np.square(vector1-vector2))) op2=np.linalg.norm(vector1-vector2) print(op1) print(op2) #输出: #5.19615242271 #5.19615242271
3.曼哈顿距离(Manhattan Distance)
从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”(L1范数)。而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)(如图1.10)。
python实现曼哈顿距离:
vector1 = np.array([1,2,3]) vector2 = np.array([4,5,6]) op3=np.sum(np.abs(vector1-vector2)) op4=np.linal<mark>本文来源gaodaimacom搞#^代%!码&网(</mark>g.norm(vector1-vector2,ord=1) #输出 #9 #9.0
4.切比雪夫距离(Chebyshev Distance)
国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个(如图1.11)。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max(| x2-x1| , |y2-y1| ) 步。有一种类似的一种距离度量方法叫切比雪夫距离(L∞范数)。
Python实现切比雪夫距离:
vector1 = np.array([1,2,3]) vector2 = np.array([4,7,5]) op5=np.abs(vector1-vector2).max() op6=np.linalg.norm(vector1-vector2,ord=np.inf) print(op5) print(op6) #输出: #5 #5.0
5. 夹角余弦(Cosine)
几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异(如图1.12)。