KNN算法

KNN算法

KNN即K-邻近算法。主要是用于分类。

它的原理比较简单,就是说首先拿出已经分好类的样本集,并且样本集的每个数据都存在标签,然后将没有标签的数据的每个特征与样本集进行对比,选择样本数据集中前 K个最相似的数据。

简单来说就是比如说一个二维坐标,x轴代表大小,y轴代表颜色,然后我们把样本集里的水果按特征放在这个坐标里,,然后一个个计算这个未知水果距离每个已知水果的距离,当它和K个最近距离中哪个水果多,那么就判断这个水果是什么水果。针对不同的任务也有所不同,像上面这种就类似投票法,对于回归任务用平均值法

算法流程

计算出已知数据集中的点与未知点的距离、按照距离递增排序、选出距离最小的k个点、确定前k个点所在类别的频率、频率最高的类别就是当前点的预测分类。如果有需要要做数据归一化,因为可能每个特征值取值范围不同。

距离一般使用欧氏距离曼哈顿距离

在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法来选择最优的K值。经验规则:k一般低于训练样本数的平方根。

 

缺点:

算法复杂度比较高,需要比较所有已知实例和要分类的实例。样本分布不均匀,如果其中一个样本过大就会成为主导,很容易被误判成该类别。

 

改进:

根据距离加上权重等

 

应用场景:

文本分类、用户推荐、回归问题(例如出租房,找和我的房子长得最相似的k个房子的价格,然后预测我的房子价格,均方根误差作为误差评估指标)、字符识别等

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值