《距离产生美》——机器学习常用距离numpy计算
面试题:各种距离计算两个样本向量的相似性
my_list1 = [5, 0, 3, 0, 2, 0, 0, 2, 0, 0]
my_list2 = [3, 0, 2, 0, 1, 1, 0, 1, 0, 1]
分别利用曼哈顿距离、欧氏距离、切比雪夫距离、闵可夫斯基距离、余弦距离计算二者之间的相似性。
〇、范数
一、欧氏距离(Euclidean Distance)
1.定义:
欧氏距离(euclidean metric)(也称欧几里得度量,二范数)是通常采用的距离定义,指在m维空间中两个点之间的真实距离。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
2.计算公式:
(1) 二维空间公式: d ( x , y ) = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 d(x, y) = \sqrt{(x_2 - x_1) ^2 + (y_2 - y_1)^2} d(x,y)=(x2−x1)2+(y2−y1)2
(2) 三维空间的公式: d ( x , y ) = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 + ( z 2 − z 1 ) 2 d(x, y) = \sqrt{(x_2 - x_1) ^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2} d(x,y)=(x2−x1)2+(y2−y1)2+(z2−z1)2
(3) n维空间的公式: d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\displaystyle \sum_{i=1}^n{(x_i - y_i) ^2}} d(x,y)=i=1∑n(xi−yi)2
3.numpy代码实现:
import numpy as np
vector1 = np.array([5, 0, 3, 0, 2, 0, 0, 2, 0, 0])
vector2 = np.array([3, 0, 2, 0, 1, 1, 0, 1, 0, 1])
print('euclidean_dist =', np.linalg.norm(vector1 - vector2)) # ord = 2
结果:
euclidean_dist = 3.0
4.适用的数据分析模型
欧氏距离能够体现个体数值特征的绝对差异,用于需要从维度的数值大小中体现差异的分析,如:
使用用户行为指标,分析用户价值的相似度或差异。
二、曼哈顿距离(Manhattan Distance)
返回顶部
红 色 、 黄 色 、 蓝 色 为 曼 哈 顿 距 离 红色、黄色、蓝色为曼哈顿距离 红色、黄色、蓝色为曼哈顿距离
1.定义:
顾名思义,在曼哈顿街区,要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离(一范数)”,也称为“城市街区距离”(City Block distance)。
2.计算公式:
(1) 二维平面两点 a ( x 1 , y 1 ) a(x_1,y_1) a(x1,y1)与 b ( x 2 , y 2 ) b(x_2,y_2) b(x2,y2)间的曼哈顿距离: d ( a , b ) = ∣ x 1 − y 1 ∣ + ∣ x 2 − y 2 ∣ d_{(a, b)} = |x_1 - y_1| + |x_2 - y_2| d