什么是kNN?

kNN 的名字中虽然含有 NN,但并不是我们常说的Neural Network神经网络。 kNN 英文全程 k - Nearest Neighbor, 中文名 k近邻算法。 kNN 根据待分类样本周围的已知类别样本来判断待分类样本的类别。简单说, 如果你周围都是猴子,那 kNN 就认为你是猴子, 如果你周围都是大学生,那 kNN 就认为你是大学生。

如图,现在有一个水果,我们想知道它是梨还是苹果,于是我们根据它的大小形装颜色把它定位到坐标轴中,再看它在坐标轴中周围一定范围内的苹果多还是梨多,如果苹果多,就认为它是苹果,如果梨多,就认为它是梨。 显然,我们现在应该把它当成苹果。

KNN中的 k 指的是 kNN 中的 k 值得是k个邻居,k = n就是根据最近的n个邻居来判断待定样本的类别。 如上图,k = 3, 大小和颜色是数据的特征,用于坐标轴中的定位,苹果和梨是数据的标签。

计算距离时,既可以使用直线距离,也就是欧氏距离;也可以使用坐标轴距离绝对值的和,也就是曼哈顿距离; 等等...

kNN 中 k 的取值非常重要,如果k太小,容易受到个例影响,k太大,又不能很好的体现Nearest。如图:

当k = 4时, 待定样本被认为是苹果, 而当k = 11时,待定样本被认为是梨。

k的取值受到数据集类型和数据集大小影响,往往需要反复尝试。

kNN 的 步骤可以简单的描述为:

1))计算样本与所有样本的距离;

2)按距离 近 -> 远 排列;

3)统计前 k 个样本的类别, 归属最多的那个类别即判定为待定样本的类别。

确定k值

前面已经提到,k值的选取会对 kNN 分类效果产生很大影响,那么应该如何选取 k 值呢?可以采用 逐个尝试的办法,但即使对于小数据集工作量也很大,而且并不是人人都是 炼丹大师。

对于较小的数据集,我们通常采用交叉验证的方法。

交叉验证: 程序自己按一定规则尝试多个 k 值,对每一个 k ,记录其在验证集上的错误次数,取错误数最小的 k 。

kNN 的思想比较简单,具体实现在sklearn中也已经封装好,用到时可以直接调用,且sklearn中也封装有交叉验证确定k值的方法,以及鸢尾花等数据。

深入浅出理解kNN(k近邻算法)相关推荐

  1. knn K近邻算法python实现

    本文主要内容: knn K近邻算法原理 sklearn knn的使用,以及cross validation交叉验证 numpy 实现knn knn改进方法 1 knn K近邻算法原理 K近邻算法:给定 ...

  2. 【20210922】【机器/深度学习】KNN (K近邻) 算法详解

    一.算法概念 KNN, K-near neighbor,即最近邻算法.它是一种分类算法,算法思想是:一个样本与数据集中的 k 个样本最相似,如果这 k 个样本中的大多数属于某一个类别,则该样本也属于这 ...

  3. KNN K近邻算法学习

    KNN算法.k-nearest neighbor,或者K-近邻算法是一种经典的机器学习算法,可以完成分类和回归任务. KNN算法主要思想: 对于输入的特征X,选取与他记录最近的K个点,统计这K个点所属 ...

  4. knn(k近邻算法)——matlab

    目录 1. 基本定义 2. 算法原理 2.1 算法优缺点 2.2 算法参数 2.3 变种 3.算法中的距离公式 4.案例实现 4.1 读取数据 4.2 分离训练集和测试集 4.3 归一化处理 4.4  ...

  5. K近邻算法KNN的简述

    什么是KNN K近邻算法又称KNN,全称是K-Nearest Neighbors算法,它是数据挖掘和机器学习中常用的学习算法,也是机器学习中最简单的分类算法之一.KNN的使用范围很广泛,在样本量足够大 ...

  6. 01 K近邻算法 KNN

    01 K近邻算法 KNN k近邻算法基础 等价于 scikit-learn中的机器学习算法封装 训练数据集,测试数据集 分类准确度 超参数 考虑距离权重 更多关于距离的定义 搜索明可夫斯基距离相应的p ...

  7. 【模式识别】实验二:K近邻算法(KNN)

    KNN是模式识别中的经典算法,本次实验就MNIST数据集来做KNN算法的实验,并结合前一次的LDA降维对数据进行进一步处理. 实验报告图片版 pdf版本可以戳这:模式识别实验报告:KNN K近邻算法 ...

  8. 机器学习7/100天-K近邻算法

    Day7 K近邻算法 github: 100DaysOfMLCode What is K-NN k近邻算法是常用的简单分类算法也可用于回归问题. KNN是一个无参的(不需要对数据分布做任何假设).基于 ...

  9. 一文搞懂K近邻算法(KNN),附带多个实现案例

    简介:本文作者为 CSDN 博客作者董安勇,江苏泰州人,现就读于昆明理工大学电子与通信工程专业硕士,目前主要学习机器学习,深度学习以及大数据,主要使用python.Java编程语言.平时喜欢看书,打篮 ...

最新文章

  1. 基于ThinkPHP框架下登录登出权限控制(一).
  2. MindMotion ISP 协议 PDF版本
  3. 《GDAL源码剖析与开发指南》一一1.9 简单的调用
  4. socket connec连接超时处理
  5. 更新elementui图标不显示_elementUI字体图标不显示问题
  6. oracle rac数据库特点,Oracle RAC集群结构的特点和缺点
  7. echarts使用记录(二)legend翻页,事件,数据集,设置y轴最大/小值,让series图形从右侧出往左移动...
  8. oracle+导入导出教程,oracle导入导出整理(一)
  9. c++ 调用labview_Namisoft解析基于Labview的自动化精密阻抗分析系统
  10. error: statement with no effect [-Werror=unused-value]
  11. Windows下使用CMD下载网络文件
  12. chrome浏览器截长图
  13. Maxscale读写分离,多实例
  14. Python网络爬虫——爬取视频网站源视频!
  15. 转:echarts图表x,y轴的设置
  16. 利用感知机实现鸢尾花分类问题
  17. 【elementUI】el-table树形结构样式修改-gif展示说明 按要求自取即可
  18. 关于wps 行尾空格不能使用下划线
  19. -XX:+DisableExplicitGC弊端
  20. matlab上万大型矩阵求逆,要好好总结一下超大矩阵求逆的技巧了

热门文章

  1. 百度AnyQ之三—anyq系统框架和功能
  2. sql 修改数据类型语句
  3. 试用期,必须跨过的那些坎
  4. IDEA 设置 / 修改快捷键
  5. 如果你是第一次创业,一定要避免犯这6个致命错误
  6. wps写论文 wps怎么取消标记
  7. MacBook, MacBook Air以及MacBook Pro区别
  8. 全球及中国预取向丝POY行业市场运营模式与投资规划研究报告2022-2028年
  9. 24 | 固若金汤的根本(上):对称加密与非对称加密
  10. 大型网站技术架构·核心原理与案例分析 第八章·固若金汤:网站的安全架构思维导图