KNN
**定义:**如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
其实就是一种分类算法。
欧式距离:
n
维
空
间
点
a
(
x
11
,
x
12
,
⋯
,
x
1
n
)
与
(
x
21
,
x
22
,
⋯
,
x
2
n
)
之
间
的
欧
氏
距
离
(
两
个
n
维
向
量
)
:
n维空间点a(x_{11},x_{12},\cdots,x_{1n})与(x_{21},x_{22},\cdots,x_{2n})之间的欧氏距离(两个n维向量):
n维空间点a(x11,x12,⋯,x1n)与(x21,x22,⋯,x2n)之间的欧氏距离(两个n维向量):
d 12 = Σ k = 1 n ( x 1 k − x 2 k ) d_{12}=\sqrt{\Sigma_{k=1}^n(x_{1k}-x_{2k})} d12=Σk=1n(x1k−x2k)
KNN流程步骤:
1)计算已知类别数据集中的点与当前点之间的距离
2)按距离递增次序排序
3)选取与当前点距离最小的k个点
4)统计前k个点所在的类别出现的频率
5)返回前k个点出现频率最高的类别作为当前点的预测分类
KNN中K值大小选择对模型的影响
- K值过小
- 容易受到异常点的影响
- 容易过拟合
- k值过大:
- 受到样本均衡的问题
- 容易欠拟合
特征预处理
什么是特征预处理
通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
特征预处理的原因
特征的单位或者⼤⼩相差较⼤,或者某特征的⽅差相⽐其他的特征要⼤出⼏个数量级,容易影响(⽀配)⽬标结果,使得⼀些算法⽆法学习到其它的特征。所以,我们需要⽤到⼀些⽅法进⾏⽆量纲化,使不同规格的数据转换到同⼀规格。
1.归一化
通过对原始数据进行变化,把数据映射到某个区间,一般是[1,1]
公式:
X
′
=
x
−
m
i
n
m
a
x
−
m
i
n
X
′
′
=
X
′
∗
(
m
x
−
m
i
)
+
m
i
X'=\frac{x-min}{max-min} \\ X''=X'*(mx-mi)+mi
X′=max−minx−minX′′=X′∗(mx−mi)+mi
作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0。
但是这种方法鲁棒性较差,因为最大值与最小值非常容易受异常点影响。
2.标准化
通过对原始数据进⾏变换把数据变换到平均值为0,标准差为1范围内。
对于标准化来说,如果出现异常点,由于具有⼀定数据量,少量的异常点对于平均值的影响并不⼤,从⽽⽅差改变较⼩。 更适合现代嘈杂大数据场景,因此常用的是标准化。
公式:
X
′
=
x
−
m
e
a
n
σ
X'=\frac{x-mean}{\sigma}
X′=σx−mean
作⽤于每⼀列,mean为平均值,σ为标准差。
https://blog.csdn.net/qq_39763246/article/details/119615696