浅谈KNN算法原理及python程序简单实现、KD树、球树

本文介绍了KNN(K-Nearest Neighbor)算法的基本原理,包括K值选择、距离度量方式和分类决策规则。详细讨论了欧式距离、曼哈顿距离和切比雪夫距离三种距离度量方法,并提到了KD树和球树这两种数据结构用于优化KNN的搜索效率。最后,简述了KNN的Python实现以及使用sklearn库调用KNN的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近比较空闲,打算利用这一段时间理一下机器学习的一些常见的算法。第一个是KNN算法:

  • KNN
  • 1、原理:

KNN,K-NearestNeighbor---K最近邻

K最近邻,就是K个最近的邻居的意思,说的就是每个样本都可以用它最接近的K个邻居来代表。核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

KNN算法的结果很大程度上取决于K的选择。

如左图所示,有两类不同的样本数据,分别用蓝方块和红三角表示,中间的绿色圆点是待分类的数据。

1、如果K=3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。

2、如果K=5,绿色圆点的最近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。

 

  • 2、重要术语:
  1. 1.算法三要素:

K值得选择、距离度量的方式、分类决策规则

1)K的选择:

没有固定的经验,一般根据样本的分布,选择一个比较小的值,可以通过交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)选择一个合适的K值;

选择较小的K值,就相当用较小的邻域中的训练实例进行预测,训练误差会减小,容易发生过拟合;

选择较大的K值,就相当于较大邻域中的训练实例进行预测,其优点是可以减少繁华误差,但缺点是训练误差会增大。

 

  1. 2.距离度量:

K近邻算法的核心在于找到实例点的邻居,如何找到邻居,邻居的判定标准是什么?用什么度量?

距离一般使用欧式距离或曼哈顿距离

欧式距离:

是最常见的两点之间或多点之间的距离表示法,如点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为:

曼哈顿距离:

又称为城市街区距离(City Block distance),通俗来讲,想象你在曼哈顿要从一个十字路口开车到另一个十字路口,驾车距离是两点间的直线距离吗?显然不是,除非你能穿越楼。实际驾驶距离就是这个‘曼哈顿距离’,此及曼哈顿距离的来源。

 

  1. 二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离 :

        

  1. 两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离 

        

补充:切比雪夫距离:

    玩过国际象棋的朋友或许知道,国王走一步能够移动到相邻的8个方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值