微信公众号:龙跃十二
我是小玉,一个平平无奇的小天才。
最近在研究机器学习的一些算法,说到这里,最先少不了的就是监督学习里的一些分类算法,比如:朴素贝叶斯(naive_bayes)、KNN、决策树、随机森林、SVM。我也把最近学的这些算法用来练练手,做一个数据集的分类,以下代码仅供参考奥!
这里是重点!!!
今天先来讲讲利用KNN算法来做一个wine数据集的分类,后边还会持续更新每一个算法哦,多多关注我的博客,也欢迎大家关注小玉和龙叔的微信公众号【龙跃十二】,更多干货持续更新,只为和你一起学习,共同进步。
KNN算法:
什么是KNN算法,你可别被这几个简单的字母吓到了,KNN其实是指K-Nearest Neighbor,字面意思就是最近的邻居,它是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。我们来看一张图:
从图中我们可以看出,要想知道蓝衣男孩的位置,我们需要计算跟他临近的四个邻居之间的距离,这样一来,我们就可以间接确定蓝衣男孩的具体位置。
关于KNN算法,总结起来就一句话:根据你的邻居来判断你的类型。
原理:
- 定义:KNN算法最早是由Cover和Hart提出的一种分类算法。如果一个样本在特征空间的K个最相似的样本中大多数属于某一类别,则这个样本也属于这一类别。
就上边这一句话很好的阐述了KNN算法的精华,你仔细品品。
关于距离的计算:
我们平时主要用到三种距离公式:
- 欧式距离
- 曼哈顿距离
- 明可夫斯基距离
这三种距离的计算我就不多说了,都是一些简单的数学问题,不明白的小伙伴baidu一下去!
注意:
1、K的取值:
-
k取值过大,更易受样本不均衡的影响。
-
k取值过小,更容易受异常点的影响。
为了解决这个问题,我们往往在运用该算法解决实际问题的时候,会使机器进行自动选择最优的K值,一会在后边的实例中给大家详解哦
2、优点与缺点:
优点:简单,算法核心易于理解,且在使用过程中不用训练模型。
缺点:K的取值非常麻烦
KNN算法属于一种懒惰算法,当测试样本过大时,该算法所占用的内存开销过大,时间复杂度也很高。
实例:
——基于KNN算法对鸢尾花iris数据集进行分类
数据集来源:可以在uci或者kaggle上下载,也可以直接在sklearn中直接调取。以下使用的是在sklearn中直接load
鸢尾花灰Iris数据集中有150个样本,每个样本有4个特征,1个标签。其中,鸢尾花种类可取0、1、2,分别代表山鸢尾setosa、变色鸢尾versicolor、维吉尼亚鸢尾virginica。
<

本文介绍了K-Nearest Neighbor(KNN)算法的基本原理和应用,强调KNN是机器学习中简单而有效的分类算法。通过讲解如何计算距离,如欧式距离、曼哈顿距离等,解释了KNN算法如何根据最近邻进行分类。同时,文章讨论了K值选取的影响,指出其优缺点,并提供了一个基于sklearn库实现的鸢尾花数据集分类实例,通过网格搜索和交叉验证寻找最佳K值。
最低0.47元/天 解锁文章
2万+

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



