K-最近邻法(K-Nearest Neighbor, KNN)最初由Cover和Hart于1968年提出,是一个在理论上比较成熟的分类算法。

KNN是一类可用于分类或回归的技术。作为一个非参数学习算法,K-最近邻并不局限于固定数目的参数。我们通常认为K-最近邻算法没有任何参数,而且使用训练数据的简单函数。事实上,它甚至也没有一个真正的训练阶段或学习过程。反之,在测试阶段我们希望在新的测试输入x上产生y,我们需要在训练数据X上找到x的K-最近邻。然后我们返回训练集上对应的y值的平均值。这几乎适用于任何类型可以确定y值平均值的监督学习。

在模式识别领域中,KNN算法是一种用于分类和回归的非参数统计方法。

算法:训练样本是多维特征空间向量,其中每个训练样本带有一个类别标签。算法的训练阶段只包含存储的特征向量和训练样本的标签。在分类阶段,k是一个用户定义的常数。一个没有类别标签的向量将被归类为最接近该点的k个样本点中最频繁使用的一类。一般情况下,将欧式距离作为距离度量,但是这只适用于连续变量。在文本分类这种离散变量情况下,另一个度量----重叠度量(或汉明距离)可以用来作为度量。

参数选择:如何选择一个最佳的K值取决于数据。一般情况下,在分类时较大的K值能够减少噪声的影响,但会使类别之间的界限变得模糊。一个较好的K值能通过各种启发式技术来获取。噪声和非相关性特征的存在,或特征尺度与它们的重要性不一致会使K近邻算法的准确性严重降低。在两类分类问题中,选取k为奇数有助于避免两个分类平票的情形。在此问题下,选取最佳经验k值的方法是自助法。

KNN算法的核心思想:如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。KNN方法在类别决策上仅仅依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

优点:简单,易于理解,易于实现;无需估计参数;无需训练。特别适合于多分类问题。

缺点:K值的确定,比较好的选取K值的方法只能是通过反复试验调整;当样本不平衡时,如一个类的样本容量很大,而其它类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数;计算量大,KNN算法的时间复杂度和存储空间的增加会随着训练集规模和特征维数的增大而快速增加。

距离度量表示法:(1)、欧式距离;(2)、曼哈顿距离;(3)、切比雪夫距离;(4)、闵可夫斯基距离;(5)、标准化欧式距离;(6)、马氏距离;(7)、巴氏距离;(8)、汉明距离;等。

K-最近邻法例子(来自:维基百科):

以上内容主要摘自:  维基百科

GitHub: https://github.com/fengbingchun/NN_Test

K-最近邻法(KNN)简介相关推荐

  1. python机器学习案例系列教程——K最近邻算法(KNN)、kd树

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 K最近邻简介 K最近邻属于一种估值或分类算法,他的解释很容易. 我们假设一个人的优秀成为设定为1.2.3.4.5.6.7.8.9.10 ...

  2. 3. k 近邻法 k-NN

    1. k k k-NN k k k-NN 是一种基本的监督学习方法,它和感知机有些不同.具体地,它没有一个明确策略,也就是没有损失函数,因此它没有一个显式的学习过程. 1.1 模型概述 k k k-N ...

  3. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  4. 斯坦福CS231n项目实战(一):k最近邻(kNN)分类算法

    我的网站:红色石头的机器学习之路 我的CSDN:红色石头的专栏 我的知乎:红色石头 我的微博:RedstoneWill的微博 我的GitHub:RedstoneWill的GitHub 我的微信公众号: ...

  5. 基于KD树的K近邻算法(KNN)算法

    文章目录 KNN 简介 KNN 三要素 距离度量 k值的选择 分类决策规则 KNN 实现 1,构造kd树 2,搜索最近邻 3,预测 用kd树完成最近邻搜索 K近邻算法(KNN)算法,是一种基本的分类与 ...

  6. scikit-learn K近邻法类库使用小结

    1. scikit-learn 中KNN相关的类库概述 在scikit-learn 中,与近邻法这一大类相关的类库都在sklearn.neighbors包之中.KNN分类树的类是KNeighborsC ...

  7. 统计学习方法笔记(李航)———第三章(k近邻法)

    k 近邻法 (k-NN) 是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化 问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨 论: 切比雪夫距 ...

  8. wifi室内定位讲解——K邻近法

    摘要 对于室内复杂环境来说, 适用于室外定位的 GPS 系统和蜂窝移动网络在室内中的定位精度明显恶化, 无法满足室内用户精确定位的需求.因此, 研究一种适用于室内复杂环境的高精度.环境自适应性强的定位 ...

  9. ML之kNN:k最近邻kNN算法的简介、应用、经典案例之详细攻略

    ML之kNN:k最近邻kNN算法的简介.应用.经典案例之详细攻略 目录 kNN算法的简介 1.kNN思路过程 1.1.k的意义 1.2.kNN求最近距离案例解释原理-通过实际案例,探究kNN思路过程 ...

最新文章

  1. 合作伙伴常见技术问题集锦
  2. T-Mobile美国加速开展5G实验:28GHz频段成为新宠
  3. 从底层重学 Java 之四大整数 GitChat链接
  4. PyTorch 1.0 中文文档:torch.onnx
  5. markdown引入代码_给你自己的博客加个 Markdown
  6. android改变textview文字,如何在Android TextView中更改文本
  7. 提高性能及操作硬件的能力
  8. 极大似然估计_一文理解机器学习中的极大似然估计(MLE)
  9. 聊聊flink JobManager的High Availability
  10. 暴雪:一心想要发财,注定无法诞生伟大的游戏,但是一旦伟大的游戏诞生,发财是一定的。
  11. Python+Selenium练习篇13-设置浏览器下载文件默认地址
  12. python- selenium-快眼看书-林深终有路
  13. MSDC 4.3 接口规范(9)
  14. 【报错】python KeyError: 2
  15. 循序渐进:用python做金融量化分析(五)MACD策略系统
  16. Android_Mms源代码接受短信流程
  17. OGG dblogin错误Unrecognized parameter (SOURCEDB), expected USERID.
  18. mysql报错 is longer than the server configured value of ‘wait_timeout‘
  19. flashfxp支持sftp了
  20. 回头草,该吃还得吃。

热门文章

  1. 卷积神经网络基础:(7)经典的网络架构
  2. TensorFlow(8)卷积神经网络实战(2)手写卷积池化
  3. 【Pandas库】(6) 索引操作--改、查、高级索引
  4. curl: (3) [globbing] error: bad range specification after pos 150的解决方法
  5. LTE MIB 的发送周期
  6. 栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配)
  7. C++多线程:thread类创建线程的多种方式
  8. Android.mk文件语法规范
  9. PAT Advanced Level 1010
  10. WinForm绘制带有升序、降序的柱形图