机器学习knn算法实现详解

本文介绍了K近邻(KNN)算法的基本原理和实现,包括距离度量(如欧氏距离、曼哈顿距离等)、K值选择和多数表决的分类决策规则。还展示了使用Python实现KNN的示例,以及如何利用kd树进行高效搜索。kd树是一种在高维空间中快速查找最近邻的 数据结构,通过构建kd树可以显著减少搜索计算量。此外,文章还探讨了kd树的构建和搜索过程。

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

k近邻法

  1. 𝑘近邻法是基本且简单的分类与回归方法。𝑘近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的 𝑘个最近邻训练实例点 ,然后利用这𝑘个训练实例点的类的多数来预测输入实例点的类。

  2. 𝑘近邻模型对应于基于训练数据集对特征空间的一个划分。𝑘近邻法中,当训练集、距离度量、𝑘值及分类决策规则确定后,其结果唯一确定。

  3. 𝑘近邻法三要素:距离度量、𝑘值的选择和分类决策规则。

  • 常用的距离度量是欧氏距离及更一般的pL距离。
  • 𝑘值小时,𝑘近邻模型更复杂;𝑘值大时,𝑘近邻模型更简单。𝑘值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的𝑘。
  • 常用的分类决策规则是 多数表决==经验风险最小化。
  1. 𝑘近邻法的实现需要考虑如何快速搜索k个最近邻点。
  • kd树 是一种便于对k维空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对𝑘维空间的一个划分,其每个结点对应于𝑘维空间划分中的一个超矩形区域。利用kd树可以省去对大部分数据点的搜索, 从而减少搜索的计算量。

距离度量

设特征空间xxxnnn维实数向量空间 ,xi,xj∈Xx_{i}, x_{j} \in \mathcal{X}xi,xjX,xi=(xi(1),xi(2),⋯ ,xi(n))Tx_{i}=\left(x_{i}^{(1)}, x_{i}^{(2)}, \cdots, x_{i}^{(n)}\right)^{\mathrm{T}}xi=(xi(1),xi(2),,xi(n))T,xj=(xj(1),xj(2),⋯ ,xj(n))Tx_{j}=\left(x_{j}^{(1)}, x_{j}^{(2)}, \cdots, x_{j}^{(n)}\right)^{\mathrm{T}}xj=(xj(1),xj(2),,xj(n))T
,则:xix_ixi,xjx_jxjLpL_pLp距离定义为:
Lp(xi,xj)=(∑i=1n∣xi(i)−xj(l)∣p)1pL_{p}\left(x_{i}, x_{j}\right)=\left(\sum_{i=1}^{n}\left|x_{i}^{(i)}-x_{j}^{(l)}\right|^{p}\right)^{\frac{1}{p}}Lp(xi,xj)=(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值