“近朱者赤,近墨者黑”。
有一种理解很有趣:“想要了解一个人,看看他周围是什么朋友就知道了。”这形象的诠释了KNN算法的思想。KNN算法在机器学习中属于监督学习,可以说是最简单的机器学习算法,它属于分类问题,其关键就是在庞大的训练集中找到与目标测试集近邻的几个数据点,以预测新测试集的结果。这里我参考了30分钟KNN算法的讲解(在这里膜拜一下讲课的老师,讲的很清楚~),针对机器学习中基础的鸢尾花数据集进行了KNN算法的实现。
因为我只是一个python+机器学习的小白,所以把很多我第一次接触到的东西写的比较详细,大佬请自行略过?,需要直接看代码往最后翻就好,有兴趣的童鞋可以继续详细看下去~
1.1 算法原理
寻找未知分类的某个数据与离它最近的n个已知数据,由此预测这个未知分类应该属于哪一个类。
其实就是上图~我们想预测绿色圆是哪种类型的,先看看离改绿色圆近的前三个邻居是谁(K=3),此时蓝色方块有1个,红色三角有2个,所以我们说当K取3时绿色圆很有可能和红色三角是一类的!而当K取到5时,发现绿色圆又更有可能是蓝色方块这一类的,因为这时候蓝方块有3个,而红三角只有两个,由此我们发现,K近邻的预测准确性受K取几影响。
1.2 通用步骤
1.计算距离(常用:欧式距离、马氏距离)
2.升序排序
3.取前K个
4.加权平均
算距离是为了知道要求的这个点和已知数据点的远近,这里用到的是欧式距离:
其中ρ为点(x1,y1)与点(x2,y2)之间的欧式距离,其实就是大家在初中就学过的求两点之间的距离公式啦!
升序排序就是为了找k个近邻;距离近的往前排,远的往后排;
最后加权平均,距离近的权重大,远的权重小。
1.3 K的选取
需要针对具体数据集适中选取。
K太小有可能因为个例的影响导致预估结果波动较大,而K太大容易导致分类模糊。
1.4 预测结果的影响因素
①算距离的方法
②K的取值
这里用到的鸢尾花数据集就是mglearn里的iris.csv,有需要的可以去我的码云里直接下载,链接已附到文末。可以用excel打开它,我们在jupyterNotebook中打印出来看看:
In[2]:
data = pd.read_csv('iris.csv')
display(data.head())
相关知识
KNN算法实现鸢尾花数据集分类
【python机器学习】KNN算法实现回归(基于鸢尾花数据集)
【机器学习】KNN算法实现鸢尾花分类
Knn算法实现鸢尾花分类
用python实现KNN算法对鸢尾花的分类
实验一:鸢尾花数据集分类
[机器学习基础][笔记] 一、鸢尾花分类
KNN算法分类算法
python利用c4.5决策树对鸢尾花卉数据集进行分类(iris)
python机器学习
网址: 原生python实现knn分类算法(鸢尾花数据集) https://m.huajiangbk.com/newsview399021.html
上一篇: 前端研究院/guigu |
下一篇: 石蒜——红色“彼岸花”的神秘传说 |