K 最近邻的核心数学知识是距离的计算和权重的计算。我们把需要预测的点作为中心点,然后计算其周围一定半径内的已知点距其的距离,挑选前 k 个点,进行投票,这 k 个点中,哪个类别的点多,该预测点就被判定属于哪一类。

1. 两点间距离公式

已知坐标系中有两个点,三角形坐标 (3,4) 和圆坐标 (7,7),如图 1 所示,它们的距离应该如何计算呢?

我们一般使用欧式距离,即高中学到的两点间的距离公式,如图 2 所示,它的本质就是勾股定理:

a2+b2=c2

根据勾股定理,我们可计算两点之间的距离为 5。

图1:已知直角坐标系中有两个点(3,4),(7,7)

图2:使用勾股定理计算两点之间的距离为5

2. 权重

权重是指某一个因素相对于整个事物的重要程度,它既体现了各个因素所占的百分比,同时也强调了因素的相对重要程度和贡献度。

例如,成绩评分分为平时成绩和考试成绩,平时成绩占总成绩的 30%,而考试成绩占 70%。也就是说,如果平时成绩是 90 分,考试成绩是 80 分,则总成绩是90×0.3+80×0.7=83分。

从这个权重配比来看,相比平时成绩,学校更看重的是考试成绩。

3. K 最近邻算法原理

现在给出一个点 (2,5),很容易判别该点属于三角形的类别,因为它的周围全部都是三角形,如图 3 所示。

图3:坐标系中分布着若干个点

图4:新出现一个点(2,5)

同样的道理,给出点 (8,5),也很容易判别这一点属于圆形的类别,如图 5 所示。

图5:新出现一个点(8,5)

但如果一点出现在 (5,5) 位置时,如图 6 所示,它应该属于哪一个类别呢?似乎并不好判别,因为它的周围既有三角形,又有圆形。

图6:新出现一个点(5,5)

让我们看一看K最近邻算法是如何解决这个问题的。如图 7 所示,K 最近邻算法首先会计算图像中每个样本点到该观测点的距离。

图7:计算所有点到该点的距离

然后将距离从小到大排序,取出前 k 个值,这里我们假设 k=5,也就是说取离观测值最近的 5 个点,如图 8 所示:

图8:取k=5个点

然后在这 5 个值中计算各个类别的个数,个数最多的类别,就是该观测值的类别。例如,这里三角形有 3 个,圆形有 2 个,三角形的个数大于圆形的个数,所以该观测值会被判定为三角形。

回想本节开头所给出的两个图,图 4 和图 5。当 k=5 时,点 (2,5) 周围最近的 5 个点全部都是三角形,所以该点被判定为三角形,如图 9 所示。

图9:当周围都是三角形的时候就被判定为三角形

k=5 时,点 (8,5) 周围最近的 5 个点全部都是圆形,所以该点被判定为圆形,如图 10 所示。

图10:当周围都是圆形的时候就被判定为圆形

KNN算法(K最近邻算法)详解相关推荐

  1. KNN(K最近邻算法)的详细介绍

    KNN(最近邻算法)的最详细介绍 一.KNN算法的基本介绍 二.KNN算法的基本思想 三.基于sklearn实现KNN(基于iris数据) 四.非基于sklearn实现KNN(基于iris数据) 五. ...

  2. 分类算法python程序_分类算法——k最近邻算法(Python实现)(文末附工程源代码)...

    kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...

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

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

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

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

  5. 基于改进的k最近邻算法的单体型重建问题An Improved KNN Algorithm for Haplotype Reconstruction Problem

    基于改进的k最近邻算法的单体型重建问题 An Improved KNN Algorithm for Haplotype Reconstruction Problem DOI: 10.12677/csa ...

  6. 图解机器学习算法(6) | 决策树模型详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  7. 操作系统:基于页面置换算法的缓存原理详解(下)

    概述: 在上一篇<操作系统:基于页面置换算法的缓存原理详解(上)>中,我们主要阐述了FIFO.LRU和Clock页面置换算法.接着上一篇说到的,本文也有三个核心算法要讲解.分别是LFU(L ...

  8. 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)

    1 分类算法–k近邻算法(KNN) 定义:如果一个样本在特征空间中**k个最相似(即特征空间中最邻近)**的样本中的大多数属于某一个类别,则该样本也属于这个类别,则该样本也属于这个类别. k-近邻算法 ...

  9. kmeans python interation flag_机器学习经典算法-logistic回归代码详解

    一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...

最新文章

  1. Django模型层Meta内部类详解
  2. MVC 之HTML辅助方法
  3. Android学习3—电话拨号器
  4. WaitForMultipleObject与MsgWaitForMultipleObjects用法
  5. Android中的Broadcast Action大全
  6. 事情在不断的解决中,想念巫英才和张国振
  7. 使用jquery制作计算器_如何使用jQuery对计算器进行编程
  8. spring mvc 和ajax异步交互完整实例
  9. 成功编译Webkit-cairo
  10. 【万字总结,花几分钟让你进一步了解指针】(学习笔记11--指针中)
  11. InputStreamReader和OutputStreamWriter
  12. 收集常用的PHP正则表达式及使用
  13. 数据结构考研自用——动态顺序表的实现【王道/严蔚敏C语言版】
  14. 计算机word宿舍管理软件,【UML课程设计】宿舍管理系统设计(WORD完整版).doc
  15. 从这里开始你的游戏黑客入门的之旅吧
  16. 【Android】期末简答题
  17. FFmpeg命令行解析
  18. 基于VSM价值流管理提升BizDevOps落地成效
  19. Pycharm 开发 PyQt5 GUI 插件安装使用
  20. 学Linux到底需要学什么

热门文章

  1. python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。...
  2. 一文详解NDT算法实现
  3. 一部手机,万物皆可复制粘贴,将AR玩出了新高度
  4. webpack 项目使用--创建webpack 项目(1)
  5. mysql 中is not null 和 !=null的区别
  6. JQuery $post函数
  7. RDKit | 基于Fraggle算法评估化合物的相似性
  8. 差异表达基因-火山图和聚类图解释
  9. 第二课.图卷积神经网络
  10. 第十二课.Seq2Seq与Attention