knn算法是指对预测集中的每一个图像与训练集中的所有图像比较,寻找出在训练集中与这一张预测图片最接近的图像,将该图像的标签给这张预测图片。实施的方法为图像矩阵相减并取绝对值,然后将得到的像素矩阵各元素相加,找到结果中的最小值,我们说产生这个最小值的图像与该预测图像最接近。

上面所说的是knn算法中当k值等于1的一种情况,这种让一个最小值来决定预测图像标签的方法有些绝对化,容易在某种巧合下产生错误的结果。比如:两张背景是一种颜色的不同物体,他们相减往往会产生一个比较小的值。

k = 1时对应的模型如上图所示:左图中的点代表训练集,他们的颜色代表为某一类,点周围的空白可以看作为预测集。现要按照距离的大小将整个图像分为不同颜色的区域。当k为1时分类结果如右图所示,可以看到图中紫色区域中包含了一小点绿色区域,按照经验来看,在大量紫色点的附近出现的最有可能的是紫色区域,但由于这个绿点(实际上称该点为噪声)的存在,使得结果出现了误差。就像下面这张图,让我们来预测一下虚线点最有可能是什么颜色。当然是红色。回到knn算法的思想,当我们仅用一个最小值来判断该点的颜色,那么就有可能出现判断错误的情况。

那么就可以将knn算法中的k值取其他值,当k等于5的时候,分类结果如下图所示,在大量红色点的周围都是红色区域,在大量紫色点的周围都是紫色区域,在大量绿色点的周围都是绿色区域,这种情况符合我们经验的预测。

回到knn算法上,若当k取5时,则表示在训练集中找到5张与该预测图像相似的图片,看着5张图片的标签哪一个出现的次数最多,出现次数最多的即为该预测图像的标签。若出现次数一样多则表示为图中的空白区域。

knn算法中k值的理解相关推荐

  1. 【机器学习】KNN算法及K值的选取

    KNN算法是有监督学习中的分类算法,它看起来和另一个机器学习算法K-means有点像(K-means是无监督学习算法),但却是有本质区别的. KNN的原理就是:当预测一个新的值x的时候,根据它距离最近 ...

  2. k近邻算法之 k值的选择

    k近邻算法之 k值的选择 举例说明: K值过小:  [过拟合] ​ 容易受到异常点的影响   [如:美人鱼本身就是喜剧片,假如统计的时候记为动作片,则对预测值的影响太大] k值过大:  [欠拟合] ​ ...

  3. K-近邻算法之K值的选择(带案例)

    三.K值的选择 K值选择问题,李航博士的一书「统计学习方法」上所说: 选择较小的K值,就相当于用较小的领域中的训练实例进行预测,"学习"近似误差会减小,只有与输入实例较近或相似的训 ...

  4. KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别

    首先感谢博主倔强的小彬雅,本文使用的素材及部分代码来源其博文机器学习入门-用KNN实现手写数字图片识别(包含自己图片转化),需要下载素材的可以到其博文最后进行下载. 关于KNN算法 knn算法也叫K临 ...

  5. 机器学习里如何确定K-Means算法的K值?

    [问题] Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少.Kmeans算法对初始值是比较敏感的,对于同样的k值,选取的点不同,会影响算法的聚类效果和迭代的次数. [解决方案] ...

  6. 聚类算法中 K均值聚类(KMeans)的python实现

    ** 聚类算法中 K均值聚类(KMeans)的python实现 ** import numpy as np import matplotlib.pyplot as plt from sklearn.d ...

  7. Kmeans算法肘部法则--Kmeans算法确定K值

    肘部法则对于K-means算法的K值确定起到指导作用,很多人在用K-means算法的时候可能不知道如何确定K取多少比较好,在面试也会遇到K值确定的问题.肘部算法可以有效解决这个问题 简单叙述一下肘部法 ...

  8. 关于二分查找算法中中间值的获取

    关于二分查找算法中中间值的获取 //left是左边元素索引的变量,right是右边元素索引的变量 int mid = (left + right) / 2; //这样写的话可能会出现问题,当数组中的元 ...

  9. 复杂网络 介数中心性 java_复杂网络算法中K—shell与介数中心性算法的实现

    ! // 文章编号:1007-1423(2014)17-0007-05 DOI:10.3969~.issn.1007-1423.2014.17.002 复杂网络算法中K-shel与介数中心性算法的实现 ...

最新文章

  1. 【转载】DotNet 资源大全中文版
  2. U-Boot 之四 构建过程(Kconfig 配置 + Kbuild 编译)详解
  3. Redis与Lua详解
  4. 查询排序_Mysql在排序和查询时不使用索引的情况
  5. 同态加法_同态—当旧趋势突然变酷时
  6. 拥抱.NET Core系列:MemoryCache 缓存选项
  7. Java中startWith方法的使用!
  8. mysql hql查询语句_常用HQL语句
  9. PAT 1153 Decode Registration Card of PAT (25 分)- 甲级
  10. Nginx页面乱码问题
  11. 在OLT上查看SLAN
  12. python2 与 python3的区别
  13. leaflet+vue:色斑图的实现大体步骤
  14. win10未能连接网络连接到服务器,win10以太网无法连接网络解决办法
  15. 【历史上的今天】2 月 4 日:Unix 之父诞生;Facebook 上线;微软大洗牌
  16. 公司java项目上线生产环境发布流程
  17. BAT解密:互联网技术发展之路(1) - 技术发展的驱动力
  18. 2022云计算真题:日志分析服务
  19. 【计算机组成原理】计算机系统结构笔记:合集
  20. 数据库课程设计(电脑配件库存管理系统)

热门文章

  1. win10(家庭版)怎么修改“c:\users”目录下文件夹名称
  2. python库在哪个文件夹里_python库在哪个文件夹下
  3. 共建手机页游生态圈 腾讯助力Cocos秋季峰会
  4. 安卓4.3新功能:帅呆了!
  5. 什么是模板缓冲(Stencil Buffer)
  6. 【酷熊科技】工作积累 ----------- C#自动添加using引用命名空间
  7. wget: 无法解析主机地址 “repo.mysql.com”
  8. windows下软件推荐
  9. AppleScript入门
  10. QT实现 字符串 数学公式运算