KNN算法(K-近邻算法)
k-NN算法采用测量不同特征值之间的距离方法进行分类
优点:简单直观、精度高、对异常值不敏感
缺点: 计算复杂、空间复杂度高
输入样本:
T
=
{
x
1
,
x
2
,
x
3
,
.
.
.
}
T=\left \{x_{1},x_{2}, x_{3},... \right \}
T={x1,x2,x3,...}对数据进行归一化处理,然后根据某种距离度量方式得到输入样本
T
T
T与训练集中的每个样本的距离,找出与输入样本距离最近的k个点(样本),记作
N
k
N_{k}
Nk。
在
N
k
N_{k}
Nk中根据某种分类规则(多数表决规则)决定输入样本
T
T
T的类别
y
y
y
距离度量方式:
- 欧式距离:优点是当作标轴进行正交旋转后,欧氏距离保持不变。 d = ( x i 1 − x j 1 ) 2 + ( x i 2 − x j 2 ) 2 + . . . d=\sqrt{(x_{i}^{1}-x_{j}^{1})^{2}+(x_{i}^{2}-x_{j}^{2})^{2}+...} d=(xi1−xj1)2+(xi2−xj2)2+...
- 曼哈顿距离: d = ∣ x i 1 − x j 1 ∣ + ∣ x i 2 − x j 2 ∣ + ∣ . . . ∣ d=\left | x_{i}^{1}-x_{j}^{1} \right |+\left | x_{i}^{2}-x_{j}^{2} \right |+\left | ... \right | d=∣∣xi1−xj1∣∣+∣∣xi2−xj2∣∣+∣...∣
- 切比雪夫距离
d
=
m
a
x
(
∣
x
i
1
−
x
j
1
∣
,
∣
x
i
2
−
x
j
2
∣
,
∣
.
.
.
∣
)
d=max(\left | x_{i}^{1}-x_{j}^{1} \right |,\left | x_{i}^{2}-x_{j}^{2} \right |,\left | ... \right |)
d=max(∣∣xi1−xj1∣∣,∣∣xi2−xj2∣∣,∣...∣)
归一化\标准化方法: - Min-Max 归一化: X = ( x − X m i n X m a x − X m i n ) X=(\frac{x-X_{min}}{X_{max}-X_{min}}) X=(Xmax−Xminx−Xmin)
- Z-Score 标准化: X = x − X m e a n σ X=\frac{x-X_{mean}}{\sigma } X=σx−Xmean
- 均值标准化:
X
=
x
−
X
m
e
a
n
X
m
a
x
−
X
m
i
n
X=\frac{x-X_{mean}}{X_{max}-X_{min}}
X=Xmax−Xminx−Xmean
归一化是为了在计算的时候消除量纲对计算的影响。
标准化在进行特征缩放的同时还不会改变数据的原始分布。
关于归一化与标准化的详细介绍