一、KNN算法 (K近邻算法) 简述
可以简单粗暴的认为在判断一个未知事物时,可以观察离它最近的几个样本。
步骤:
寻找样本数据集K个最近的元素
计算K个元素中各种类别的占比
占比最高的类别即为新数据的类别
K的取值对结果有很大的影响
如下图,中间的圆要被赋予哪个类?是三角形还是正方形?如果K=3,由于三角形所占比例为2/3,圆将被赋予三角形那个类;如果K=7,由于正方形所占比例为4/7,圆将被赋予正方形那个类

计算复杂度优化
- 计算新数据(未知样本)和K个训练样本的距离dist;
- 得到目前K个最邻近样本中的最大距离maxdist;
- 如果第K+1个训练样本......(剩余的所有训练样本)的dist小于maxdist,则将该训练样本作为K-最近邻样本(即替换掉上述K个最邻近样本中最大距离的那个训练样本)。
边界清晰--选取中心点 纯度
数据倾斜问题-- 增加权重
二、使用KNN对iris数据集分类
1、导入numpy、Matplotlib、sklearn类库及其模块
import numpy as np
# Puplot 提供了一套和MATLAB类似的绘图API,使得Matplotlib的机制更像MATLAB。
# 我们只需要调用Pyplot模块所提供的函数就可以快速绘图并设置图表的各个细节
import matplotli

本文详细介绍了K近邻(KNN)算法的原理,强调了K值选择对分类结果的影响,并通过实例展示了如何使用KNN对iris数据集进行分类。文章详细解释了numpy.meshgrid、numpy.c_和ravel()等关键函数的作用,并提供了完整的代码实现。
最低0.47元/天 解锁文章
5123

被折叠的 条评论
为什么被折叠?



