- KNN算法的定义及原理
- 距离公式的使用
- 注意k的取值
- 鸢尾花种类预测案例
- 优缺点
- 优点
- 缺点
- 使用场景
- 优化方案
K—近邻算法(K Nearest Neighbor)算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
其定义为:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
两个样本的距离可以通过欧式距离公式计算。
比如说,a(a1,a2,a3),b(b1,b2,b3),则
d
=
s
q
r
t
((
a
1
−
b
1
)
2
+
(
a
2
−
b
2
)
2
+
(
a
3
−
b
3
)
2
)
d = sqrt((a1-b1)^2+(a2-b2)^2+(a3-b3)^2)
d=sqrt((a1−b1)2+(a2−b2)2+(a3−b3)2)
也可使用曼哈顿距离公式
曼哈顿距离和欧氏距离都是明可夫斯基距离公式的特殊情况
k值取的过大,易受到样本不均衡的影响
k值取的过小,易受到异常点的影响
鸢尾花种类预测案例
具体代码如下
1
具体使用Iris数据集,训练集与测试集均要标准化
代码中需要注意的是,对测试集所做的标准化要用transform而不是fit_transform,用训练集的平均值和标准差对测试集进行标准化,以达到进行相同的标准化操作的目的
优缺点 优点
简单,易于理解,易于实施,无需训练
缺点1.懒惰算法,对测试样本分类时的计算量大,内存开销大
2.必须指定k值,k值选择不当则分类精度不能保证
小数据场景,几千-几万样本,具体场景具体业务去测试
优化方案使用起参数搜索——网络搜索(Grid Search),人为定义多个k值,在代码中添加相关内容,机器自动通过各组的交叉验证来进行评估,最后选出最优参数组合建立模型。
图片来自b站网课代码截屏内容 ↩︎



