概述
k-近邻(kNN) 算法算是一种基本分类与回归算法。
一句话,就是近朱者赤近墨者黑。
**
k 近邻算法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k 近邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻算法不具有显式的学习过程。
k 近邻算法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。 k值的选择、距离度量以及分类决策规则是k近邻算法的三个基本要素。
kNN 原理
工作原理
- 假设有一个带标签的样本数据集(训练样本集),其中包含每条数据与所属分类的对应关系。
- 输入没有标签的新数据,将新数据的每个特征与样本集中数据对应的特征比较
- 计算新数据与样本数据集中每条数据的距离
- 对求出的距离进行排序(距离越小约相似)
- 取前 k 个样本的数据的标签
-
通俗理解
给定一个带标签的样本数据集,对输入的新实例,在样本数据集中找出 k 个最邻近的实例,这 k 个实例中的多数属于某个类别,就把这个新实例归为这个分类。
开发流程
收集数据
- 准备数据:距离计算所需要的数值
- 分析数据
- 训练算法:此步骤不适合 k-近邻算法
- 测试算法:计算错误率
- 使用算法:输入样本数据和结构化的输出结果,运行 k-近邻算法判断输入数据的类别,最后对计算出的类别进行后续操作
特点
优点:精度高、对异常值不敏感、无数据输入假定
缺点:计算复杂度高、空间复杂度高
适用数据范围:数值型和标称型
