python knnsearch_K近邻(KNN)算法(含python实现)

本文详细介绍了K近邻(KNN)算法的基本概念,包括k值的选择、距离度量和分类决策。还探讨了kd树数据结构,用于加速KNN的搜索过程。通过实例展示了如何使用Python实现暴力法和kd树进行KNN分类,并比较了两者的效率。最后,通过实验展示了kd树在效率上的优势。
摘要由CSDN通过智能技术生成

1. k近邻模型

k 近邻法,k-nearest neighbor, k-NN,是一种基本的分类与回归的算法。其三大要素:k的选取、距离判别公式、分类决策. k 近邻法模型:

equation?tex=N_k%28x%29代表与 x 最近邻的 k 个点的邻域。

equation?tex=y+%3D+%5Carg+%5Cmax+_%7Bc_%7Bj%7D%7D++%5Csum%5Climits_%7Bx_j+%5Cin+N_k%28x%29%7D+I%28y_i+%3D+c_j%29+%5C%5C

1、k取值 取值小,结构复杂,相似误差小,但容易过拟合; 取值大,结构简单,相似误差大。 在应用中,k 一般选择较小的值,可通过交叉验证来确定最佳的 k 值。此外,k 一般取奇数,防止出现类别数相等的情况。

2、距离度量 一般使用欧氏距离,或者更一般的

equation?tex=L_p距离。

equation?tex=L_p%28x_1%2C+x_2%29+%3D+%28%5Csum%5Climits_l+%7Cx_i%5El+-+x_j%5El%7C%5Ep%29%5E%7B1%2Fp%7D+%5C%5C

这里,

equation?tex=l 代表特征维度.

3、分类决策 多数表决,即k个最近点类别多数的那个类别。

2. kd树

kd 树,k-dimensional tree,一种分割 k 维度数据空间的数据结构。

创建kd树: 1、选择当前维度下数据的中位数对应的样本当作父节点,从而,划分剩余数据划分到左、右子树; 2、选取当前维度的下一个维度,对左、右子树重复操作 1。

最近邻搜索: 1、搜索目标节点在kd 树对应的“最佳叶节点”。 具体是从根节点出发,根据目标节点在相应维度下的值进行划分,直到划分到叶子结点。 2、向上遍历。 具体是从“最佳叶节点”出发,如果当前点比“最佳叶节点”更靠近目标节点,则该节点为当前最佳点,并且检查该节点的兄弟节点; 直到根节点,搜索结束。

3. 实践

3.1暴力法

使用暴力法进行实现,

equation?tex=N 个样本,

equation?tex=D维数据建模的算法复杂度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值