前言
KNN算法
一、疑问
- K表示什么,如何取值
- 如何寻找计算距离的点
二、基本步骤
1)算距离:给定测试对象,计算它与训练集中的每个对象的距离
2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类
三、图解
四、疑惑解答
- K的取值靠自己一个个设置,再看效果,来确定,一张相同的图片对照K=1和K=5的效果如下
图中 K=1 可以发现一些颜色当中会嵌套着另外一些颜色的小点,而根据经验来说,比如离紫色最近的地方,必定也是紫色,因此这种K=1的取值可能会造成过拟合,当K=5时,可以看到图中大量红色的地方是红色,大量紫色绿色的地方分别是相同的颜色,这种分布,比较符合算法的预期,因此这里K=5比较好 - KNN距离计算比较粗暴,直接讲预测点和所有点进行计算,然后排序
五、代码
1)计算已知类别数据集中的点与当前点之间的距离
2)按距离递增次序排序
3)选取与当前点距离最小的k个点
4)统计前k个点所在的类别出现的频率
5)返回前k个点出现频率最高的类别作为当前点的预测分类
from numpy import * #导入numpy科学计算包
import ope