• 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. Sql Server (MSSQLSERVER) 服务无法启动

    北京的冬天特别干燥,大清早的一同事就和服务器擦出了爱的火花,结果没想到竟导致服务器无法开机了,这可尴尬了,代码可都在服务器上托管着呢,一会还等着上线呢,必须得修啊.他们说是主板坏了,就另外找了一台电脑 ...

  2. [Dart] Capture and Handle Data Sequences with Streams in Dart

    Streams represent a sequence of asynchronous events. Each event is either a data event, also called ...

  3. Linux操作系统常用命令合集——第三篇-系统管理操作(25个命令)

    1.whoami [命令作用] 显示当前登录有效用户名称 [命令语法]  whoami    [选项] [常用选项] 无 [参数说明] 用户名称 [命令示例] 显示当前登录有效用户名称 # whoam ...

  4. HTML与CSS网页开发基础

    HTML标记语言 HTML文件的创建 整个编译器,或者记事本,文件扩展名改为.htm或者.html HTML文档结构 <html>标记:开头,所有HTML文件以<html>标记 ...

  5. 支持utf8的str_split函数

    <?php header("Content-type: text/html; charset=utf-8"); /** * 按字节数对字符串进行分片 * @param $st ...

  6. 1829:【02NOIP提高组】自由落体

    #include<bits/stdc++.h> using namespace std; double h,s1,v,k,l; int n,ans; int main() { cin> ...

  7. ZR#988

    ZR#988 解法: 先算出横着能排多少座位, 以及需要排几列, 才能把 n 个座位全部排下来.要使得尽量多的位置在走廊边上, 于是在 n 列中插入走廊的策略是显然的, 我们只要以两列为单位, 在其中 ...

  8. ubuntu16.04安装matlab_R2018a/R2017a

    ubuntu16.04安装matlab_R2018a/R2017a 1. 文件准备 我把Matlab2018a安装镜像及破解文件放在了/home/haes/Downloads/matlab下 2.挂载 ...

  9. 最简单的SpringAop 小案例

    网盘下载地址: 链接:https://pan.baidu.com/s/1Z-em-1ouWyXeMP3JW0IbCg    提取码:0o4o 1.目录结构: 2.配置文件  applicationCo ...

  10. 我的公众号:WebHub

    欢迎各位小可爱关注我的公众号WebHub(ID:myWebHub),公众号不定期更新软件行业的总结性文章,内容包括行业趋势和软件哲学,文章不谈技术只谈思想,满满干货! 此外,公众号文章同步CSDN博客 ...