KNN算法

目录

一、KNN算法概述

1.KNN特点

2.KNN算法的优势和劣势

二、KNN算法介绍       

三、KNN算法API介绍

1.KNN分类API

2.KNN回归API

四、距离度量

五、总结

一、KNN算法概述

KNN可以说是最简单的分类算法之一,同时,它也是最常用的分类算法之一,注意KNN算法是有监督学习中的分类算法,它看起来和另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。

1.KNN特点

KNN是一种非参的,惰性的算法模型。

非参的意思并不是说这个算法不需要参数,而是意味着这个模型不会对数据做出任何的假设,与之相对的是线性回归(我们总会假设线性回归是一条直线)。也就是说KNN建立的模型结构是根据数据来决定的,这也比较符合现实的情况,毕竟在现实中的情况往往与理论上的假设是不相符的。

惰性是因为同样是分类算法,逻辑回归需要先对数据进行大量训练(tranning),最后才会得到一个算法模型。而KNN算法却不需要,它没有明确的训练数据的过程,或者说这个过程很快。

2.KNN算法的优势和劣势

KNN算法优点

  1. 简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。
  2. 模型训练时间快,上面说到KNN算法是惰性的,这里也就不再过多讲述。
  3. 预测效果好。
  4. 对异常值不敏感

KNN算法缺点

  1. 对内存要求较高,因为该算法存储了所有训练数据
  2. 预测阶段可能很慢
  3. 对不相关的功能和数据规模敏感

二、KNN算法介绍       

KNN的全称是K Nearest Neighbors,意思是K个最近的邻居。K个最近邻居,毫无疑问,K的取值肯定是至关重要的。其实,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别

ac4b331e75074d548770f70a6ee4a56b.png

                             X                                         X

图中绿色的点就是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了。

3d5e9450b4eb40f780041447e3fb3e92.png

                              X                                          X

但是,当K=5的时候,判定就变成不一样了。这次变成红圆多一些,所以新来的绿点被归类成红圆。所以我们要注意K值的选取点距离的计算

K值的选择:   •K值过小:过拟合

                        •K值过大:欠拟合

三、KNN算法API介绍

1.KNN分类API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数

426ce10b61d94310a855d0dec2403ec9.png

b26e7c3744ec4b0c86d4241b9573bf4d.png

2.KNN回归API

sklearn.neighbors.KNeighborsRegressor(n_neighbors=5)

9df04d88c31f43c88fdc579a6bab4d05.png

3c78d766425f470aa52a3b8bc62deaeb.png

四、距离度量

要度量空间中点距离的话,有好几种度量方式,比如常见的曼哈顿距离计算,欧式距离计算等等。不过通常KNN算法中使用的是欧式距离,拿二维平面为例,二维空间两个点的欧式距离计算公式如下:

8fc0e96f411544ddb06c5ac338a1225b.png

这个我们高中就接触到的了,其实就是计算(x1,y1)和(x2,y2)的距离。如果拓展到多维空间,则公式变成这样:

 0d4942d411794ddeaa334f2068b2f77b.png

KNN算法最简单粗暴的就是将预测点与所有点距离进行计算,然后保存并排序,选出前面K个值看看哪些类别比较多。


五、总结

KNN算法是一种基于实例的学习算法,通过计算样本之间的距离来确定新样本的类别或数值。在分类问题中,KNN算法将新样本归类为距离其最近的K个样本中最多的类别;在回归问题中,KNN算法则通过计算新样本与训练集中所有样本的距离,找到距离最近的K个样本,然后用这K个样本的平均值或中位数来预测新样本的输出值。

好啦,本次的分享就到这里啦!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值