knn算法

K近邻算法是一种基于距离度量的懒惰学习方法。本文介绍了knn的工作机制,距离计算通常采用欧式距离,K值的选择影响分类效果。算法优势包括简单易用、模型训练快速和预测效果好,但缺点是内存需求高、预测阶段慢且对特征相关性和数据规模敏感。以鸢尾花分类为例展示了knn算法的代码实现,并讨论了不同k值对误差率的影响。
摘要由CSDN通过智能技术生成

k近邻算法的概述
工作机制:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。通常,在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。

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

但是,当K=5的时候,判定就变成不一样了

k-近邻算法一般流程

1.计算已知类别数据集中的点与当前点之间的距离;

2.按照距离递增次序排序;

3.选取与当前点距离最小的k个点;

4.确定前k个点所在类别的出现频率;

5.返回前k个点出现频率最高的类别作为当前点的预测分类

距离计算

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

 拓展到多维空间,则公式变成这样:

K值选择

从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。

关于交叉验证:将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据。

通过交叉验证计

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值