KNN简介
KNN(k-Nearest Neighbors)又称作k-近邻。k-nn就是把未标记分类的案列归为与它们最相似的带有分类标记的案例所在的类。
KNN的特点
| 优点 | 缺点 |
|---|---|
| 简单且有效 | 不产生模型 |
| 训练阶段很快 | 分类过程比较慢 |
| 对数据分布无要求 | 模型解释性较差 |
| 适合稀疏时间和多分类问题 | 名义变量和缺失数据需要额外处理 |
| … | … |
KNN模型
K近邻模型有三个基本要素:距离度量、K值的选择、分类决策规则
实现步骤
- 计算距离:计算待测案例与训练样本之间的距离 。
- 选择一个合适的k:确定用于KNN算法的邻居数量,一般用交叉验证或仅凭经验选择一个合适的k值,待测案例与训练样本之间距离最小的k个样本组成一个案例池。
- 类别判定:根据案例池的数据采用投票法或者加权投票法等方法来决定待测案例所属的类别。
KD-Tree
kd-tree是一种分割k维数据空间的数据结构。主要应用于多维空间数据的搜索,经常使用在SIFT、KNN等多维数据搜索的场景中,以KNN(K近邻)为例,使用线性搜索的方式效率低下,k-d树本质是对多维空间的划分,其每个节点都为k维点的二叉树kd-tree,因此可以大大提高搜索效率。详细的构造方法和kd树的最近邻搜索方法可以参考李航老师的《统计学习方法》。
1.定义Kd树类及其方法
package CH3_KNearestNeibor
/**
* Created by WZZC on 2019/11/29
**/
/**
*
* @param label 分类指标
* @param value 节点数据
* @param dim 当前切分维度
* @param left 左子节点
* @param right 右子节点
*/
case class TreeNode(label: String,

本文深入解析了KNN(k-近邻)算法的基本原理、特点及应用,详细介绍了KNN模型的实现步骤,包括距离度量、K值选择和分类决策规则。并通过KD-Tree优化搜索效率,提供了Spark环境下KNN模型的实现代码,最后展示了算法测试过程。
最低0.47元/天 解锁文章
371





