KNN算法笔记及python演示

KNN算法是一种监督学习方法,通过计算测试样本与已分类样本的距离来决定分类。K值选择对结果影响显著,通常用交叉验证确定。算法包括选择距离公式、排序、选取最近K个点并投票决定类别。KNN存在计算量大和样本不平衡问题,可使用K-d树优化和权重调整。代码演示展示了如何使用Python实现,并调整K值以影响准确度。
摘要由CSDN通过智能技术生成

KNN算法又称K邻近算法,属于监督学习
其中心思想是找到未分类样本附近K个最相近的已分类样本,该样本的分类由附近已分类的样本投票决定。
在这里插入图片描述
可通过欧氏距离、曼哈顿距离等计算测试样本与已分类样本之间的距离

K值的选择会直接影响归类效果。
在这里插入图片描述
在这里插入图片描述
k太小,分类结果易受噪声点影响;
k太大,近邻中又可能包含太多的其它类别的点。(对距离加权,可以降低k值设定的影响)k值通常是采用交叉检验来确定(以k=1为基准)
经验规则:k一般低于训练样本数的平方根。

算法步骤
1.选择距离公式。
2.计算为分类样本点与其他所有已分类样本之间的距离。
3.针对计算出的距离进行升序排序。
4.选择前K各个距离最短的点。
5.前K个距离最短的点中,未分类的样本点所属分类,由附近已分类的样本投票决定。

缺陷与改进
缺陷一:计算为分类点与所有已分类的点距离,再进行排序,导致计算量大。
改进:使用K-d树数据结构,优化搜索操作,减少计算量。
在这里插入图片描述
缺陷二:样本不平衡问题会影响分类结果。
改进:采用权值的方法(距离的倒数)
在这里插入图片描述

K-d树数据结构
对数据点在k维空间划分的一种数据结构
中心思想:K-d树是一种空间划分树,把整个空间划分为特定的几个部分,然后在特定空间的部分内进行相关搜索操作。

K-d树构建

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值