• 2019-11-09 20:11:26为方便自己收藏学习,转载博文from:https://blog.csdn.net/llhwx/article/details/102652798

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

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

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

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

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

——————————分割线——————————

比如:如果k=1就找出来和需要判别值最近邻的一个值。只根据这一个值判别 需要分类的数据属于哪一类。但往往k=1容易出现错误,比如上文提到的如果两张图片的背景同样,但是不同物体,这样判别出的有时不准,。一般K应该取的稍微大,多找一些最近邻值与之相比较。综合判断进行分类。

knn算法一般是通过计算欧式距离找出判别点与哪个标签的距离最小。需要注意的是上文提到了一个针对图像的方法:图像矩阵进行相减去绝对值,然后将得到的像素矩阵各元素进行相加,找到最小值,则需要判别分类的图像就属于最小值对应的图像类。

理解KNN算法中的k值-knn算法中的k到底指的是什么 ?的更多相关文章

  1. ASP.NET 4.0 ListView等容器控件中获取ClientID值与HTML中自动生成ID字符串不一样问题。

    ASP.NET 4.0 中 ClientIDMode的属性 可以设置获取不同ID格式的值. 项目中遇到的问题: 1.ListView1 ItemDataBound事件中,获取ClientID结果与自动 ...

  2. 计算机中的K、M、G、T到底指的是

    计算机语言是二进制数字01组成. 在计算机工作中,2的10次方用K(kilo)表示,2的20次方用M(mega)表示,2的30次方用G(giga)表示,2的40次方用T(tera)表示.因此,4K=2 ...

  3. Gridview中显示的值根据数据库中带出的值作更改

    前台页面对Gridview增加事件 OnRowDataBound="GridView1_RowDataBound"protected void GridView1_RowDataB ...

  4. k近邻(KNN)复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合内容: 1.算法概述 K近邻算法是一种基本分类和回归方法:分类时,根据其K个最近邻的训练实例的类 ...

  5. 深入浅出KNN算法(二) sklearn KNN实践

    姊妹篇: 深入浅出KNN算法(一) 原理介绍 上次介绍了KNN的基本原理,以及KNN的几个窍门,这次就来用sklearn实践一下KNN算法. 一.Skelarn KNN参数概述 要使用sklearnK ...

  6. 数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)

    一.聚类的概念 聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.我们事先并不知道数据的正确结果(类标),通过聚类算法来发现和挖掘数据本身的结 ...

  7. 图文结合深入理解 JS 中的 this 值

    图文结合深入理解 JS 中的 this 值 在 JS 中最常见的莫过于函数了,在函数(方法)中 this 的出现频率特别高,那么 this 到底是什么呢,今天就和大家一起学习总结一下 JS 中的 th ...

  8. OpenCV-Python:K值聚类

    关于K聚类,我曾经在一篇博客中提到过,这里简单的做个回顾. KMeans的步骤以及其他的聚类算法 K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算 其他聚类算法:二分K-均 ...

  9. K-均值聚类算法

    K-均值聚类算法 聚类是一种无监督的学习算法,它将相似的数据归纳到同一簇中.K-均值是因为它可以按照k个不同的簇来分类,并且不同的簇中心采用簇中所含的均值计算而成. K-均值算法 算法思想 K-均值是 ...

随机推荐

  1. GreenPlum/postgres copy命令导出/导入数据

    一.COPY命令简单实用 1.copy在postgres与GreenPlum介绍 1.1 postgrespostgres的COPY命令可以快速的导出/导入数据到postgresql数据库中,支持常用 ...

  2. SQL SERVER PIVOT使用

    参照这个网址介绍 http://www.cnblogs.com/lwhkdash/archive/2012/06/26/2562979.html 一般SQL Server的函数都会识别为紫色,可是PI ...

  3. 认识WebStorm-小程序框架wepy

    WebStorm是一个功能强大的IDE,适用于JavaScript开发,适合使用Node.js进行复杂的客户端开发和服务器端开发. WebStorm具有对JavaScript,HTML, CSS及其现 ...

  4. python学习:模块(第一节)

    1.什么是模块? 如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这 ...

  5. resin初识

    Resin初识 1. resin简介 刚入职的公司用的后台服务器是resin,故因此学习记录一下. resin是一个非常流行的web引用服务器,对servlet和jsp提供了良好的支持,自身采用jav ...

  6. 3.linux 别名 查找 压缩与解压缩

    1.别名     alias  别名=‘定义命令内容’     alias grep=‘grep --color’       vim  ~/.bashrc     关掉终端再开一次!!!!才能生效 ...

  7. 测试开发中Django和Flask框架

    Python测试开发中Django和Flask框架 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应用.系统应用)跟建造房子的过程一样,需要先打地基,搭好骨架,然后 ...

  8. P5663 加工零件

    P5663 加工零件 题解 暴力搜索 搜索显然会TLE #include<iostream> #include<cstdio> #include<cstdlib> ...

  9. C#-片段:外侧代码

    ylbtech-C#-片段:外侧代码 1.返回顶部 ·#if #if true #endif ·#region #region MyRegion #endregion ·namespace names ...

  10. sql中union,union all没有兼顾到的内容

    今日遇到一个问题,两张表联合取交集去重,但是需要把某一字段相同的也给去掉 union all : 联合,没有取交集 union :联合取交集(仅针对所有字段相同的去重) 解决方案:将联合的数据作为一个 ...