理解KNN算法中的k值-knn算法中的k到底指的是什么 ?
- 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到底指的是什么 ?的更多相关文章
- ASP.NET 4.0 ListView等容器控件中获取ClientID值与HTML中自动生成ID字符串不一样问题。
ASP.NET 4.0 中 ClientIDMode的属性 可以设置获取不同ID格式的值. 项目中遇到的问题: 1.ListView1 ItemDataBound事件中,获取ClientID结果与自动 ...
- 计算机中的K、M、G、T到底指的是
计算机语言是二进制数字01组成. 在计算机工作中,2的10次方用K(kilo)表示,2的20次方用M(mega)表示,2的30次方用G(giga)表示,2的40次方用T(tera)表示.因此,4K=2 ...
- Gridview中显示的值根据数据库中带出的值作更改
前台页面对Gridview增加事件 OnRowDataBound="GridView1_RowDataBound"protected void GridView1_RowDataB ...
- k近邻(KNN)复习总结
摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合内容: 1.算法概述 K近邻算法是一种基本分类和回归方法:分类时,根据其K个最近邻的训练实例的类 ...
- 深入浅出KNN算法(二) sklearn KNN实践
姊妹篇: 深入浅出KNN算法(一) 原理介绍 上次介绍了KNN的基本原理,以及KNN的几个窍门,这次就来用sklearn实践一下KNN算法. 一.Skelarn KNN参数概述 要使用sklearnK ...
- 数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)
一.聚类的概念 聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.我们事先并不知道数据的正确结果(类标),通过聚类算法来发现和挖掘数据本身的结 ...
- 图文结合深入理解 JS 中的 this 值
图文结合深入理解 JS 中的 this 值 在 JS 中最常见的莫过于函数了,在函数(方法)中 this 的出现频率特别高,那么 this 到底是什么呢,今天就和大家一起学习总结一下 JS 中的 th ...
- OpenCV-Python:K值聚类
关于K聚类,我曾经在一篇博客中提到过,这里简单的做个回顾. KMeans的步骤以及其他的聚类算法 K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算 其他聚类算法:二分K-均 ...
- K-均值聚类算法
K-均值聚类算法 聚类是一种无监督的学习算法,它将相似的数据归纳到同一簇中.K-均值是因为它可以按照k个不同的簇来分类,并且不同的簇中心采用簇中所含的均值计算而成. K-均值算法 算法思想 K-均值是 ...
随机推荐
- Lavavel Lifecycle
- GreenPlum 数据库创建用户、文件空间、表空间、数据库
前几篇文章介绍了GreenPlum数据库的安装.启动.关闭.状态检查.登录等操作,数据库已经创建好了,接下来介绍如何使用数据库.按照习惯,需要先创建测试用户.表空间.数据库.先创建测试用户dbdrea ...
- SQL Server查询性能
sql server常用语句总结 http://ace105.blog.51cto.com/639741/792519 SQL Server 性能调优(一)--从等待状态判断系统资源瓶颈 ...
- 差分约束 【bzoj2330】[SCOI2011]糖果
/*[bzoj2330][SCOI2011]糖果 2014年3月5日1,2761 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖 ...
- 《Microsoft Visio 2013 Step by Step.pdf》
- 微信小程序环境下将文件上传到 OSS
步骤 1: 配置 Bucket 跨域 客户端进行表单直传到 OSS 时,会从浏览器向 OSS 发送带有 Origin 的请求消息.OSS 对带有 Origin 头的请求消息会进行跨域规则(CORS)的 ...
- centos7haproxy+keepalive
1部署keepalived 1.1下载keepalived源码包,并解压# wget http://www.keepalived.org/software/keepalived-1.4.2.tar.g ...
- Fidller抓包分析post请求
目的:抓包是为了最近做接口测试做准备,以前没有用过这个工具,最近来学下,但是网上很多文章了,所以不一一记录,有一部分参考即可 1.如何抓取想要的web端或者手机端包,已经有很多文章谢了,推荐的参考文章 ...
- lucene正向索引(续)——每次commit会形成一个新的段,段"_1"的域和词向量信息可能存在"_0.fdt"和"_0.fdx”中
DocStoreOffset DocStoreSegment DocStoreIsCompoundFile 对于域(Stored Field)和词向量(Term Vector)的存储可以有不同的方式, ...
- 20165223《网络对抗技术》Exp7 网络欺诈防范
目录 -- 网络欺诈防范 实践说明 实践目标 基础知识问答 实验工具学习 实践内容 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术,用DNS spoof引导特定 ...