K-近邻算法简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K-近邻算法简介相关的知识,希望对你有一定的参考价值。

参考技术A

1.K-近邻(KNearestNeighbor,KNN)算法简介 :对于一个未知的样本,我们可以根据离它最近的k个样本的类别来判断它的类别。

以下图为例,对于一个未知样本绿色小圆,我们可以选取离它最近的3的样本,其中包含了2个红色三角形,1个蓝色正方形,那么我们可以判断绿色小圆属于红色三角形这一类。
我们也可以选取离它最近的5个样本,其中包含了3个蓝色正方形,2个红色三角形,那么我们可以判断绿色小圆属于蓝色正方形这一类。

3.API文档

下面我们来对KNN算法中的参数项做一个解释说明:

\'n_neighbors\':选取的参考对象的个数(邻居个数),默认值为5,也可以自己指定数值,但不是n_neighbors的值越大分类效果越好,最佳值需要我们做一个验证。
\'weights\': 距离的权重参数,默认uniform。
\'uniform\': 均匀的权重,所有的点在每一个类别中的权重是一样的。简单的说,就是每个点的重要性都是一样的。
\'distance\':权重与距离的倒数成正比,距离近的点重要性更高,对于结果的影响也更大。
\'algorithm\':运算方法,默认auto。
\'auto\':根绝模型fit的数据自动选择最合适的运算方法。
\'ball_tree\':树模型算法BallTree
\'kd_tree\':树模型算法KDTree
\'brute\':暴力算法
\'leaf_size\':叶子的尺寸,默认30。只有当algorithm = \'ball_tree\' or \'kd_tree\',这个参数需要设定。
\'p\':闵可斯基距离,当p = 1时,选择曼哈顿距离;当p = 2时,选择欧式距离。
n_jobs:使用计算机处理器数目,默认为1。当n=-1时,使用所有的处理器进行运算。

4.应用案例演示
下面以Sklearn库中自带的数据集--手写数字识别数据集为例,来测试下kNN算法。上一章,我们简单的介绍了机器学习的一般步骤:加载数据集 - 训练模型 - 结果预测 - 保存模型。这一章我们还是按照这个步骤来执行。
[手写数字识别数据集] https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits

5.模型的方法
每一种模型都有一些它独有的属性方法(模型的技能,能做些什么事),下面我们来了解下knn算法常用的的属性方法。

6.knn算法的优缺点
优点:
简单,效果还不错,适合多分类问题
缺点:
效率低(因为要计算预测样本距离每个样本点的距离,然后排序),效率会随着样本量的增加而降低。

以上是关于K-近邻算法简介的主要内容,如果未能解决你的问题,请参考以下文章

K-近邻算法简介

机器学习:K-近邻分类

李航统计学习方法(第二版):k 近邻算法简介

机器学习(算法篇)——K-近邻算法

史诗级干货长文K-近邻算法

最基础的分类算法-k近邻算法 kNN简介及Jupyter基础实现及Python实现