特征空间中两个实例点的距离是两个实例点相似程度的反映。可以用
L
p
L_p
Lp distance来度量两个实例点的距离:
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
)
1
p
L_p(x_i, x_j) = \left( \sum_{l=1}^{n} \left| x_i^{(l)} - x_j^{(l)} \right|^{p} ) \right )^{\frac{1}{p}}
Lp(xi,xj)=(l=1∑n∣∣∣xi(l)−xj(l)∣∣∣p))p1
这里
p
≥
1
p≥1
p≥1。
- 当 p = 1 p=1 p=1 时,称为曼哈顿距离;
- 当 p = 2 p=2 p=2 时,称为欧式距离;
- 当 p = ∞ p=\infty p=∞ 时,称为切比雪夫距离。它是各个坐标距离的最大值。
Python 中的 numpy 库可以很方便地计算两点(x1, x2)的距离,使用 numpy 中求范数的方法 np.linalg.norm() 实现:
np.linalg.norm(x1-x2, ord=None, axis=None, keepdims=False)
注:
度量(metric)是对一个集合里面的两个元素而言的,是两点间距离的抽象。
范数(norm)是对一个元素而言的,是实数的绝对值或复数的模这样的长度的抽象。
其中各参数分别为(需要更改的是前两个):
- x1-x2:两个点(向量)各个维度上的差
- ord:求哪一种距离,对应 p p p,默认为 2
- axis:取值 0 或 1,0 表示按列向量处理,求多个列向量的范数。默认为 0
- keepding:是否保持矩阵的二维特性,默认为 False