knn算法中k值的理解
knn算法是指对预测集中的每一个图像与训练集中的所有图像比较,寻找出在训练集中与这一张预测图片最接近的图像,将该图像的标签给这张预测图片。实施的方法为图像矩阵相减并取绝对值,然后将得到的像素矩阵各元素相加,找到结果中的最小值,我们说产生这个最小值的图像与该预测图像最接近。
上面所说的是knn算法中当k值等于1的一种情况,这种让一个最小值来决定预测图像标签的方法有些绝对化,容易在某种巧合下产生错误的结果。比如:两张背景是一种颜色的不同物体,他们相减往往会产生一个比较小的值。
k = 1时对应的模型如上图所示:左图中的点代表训练集,他们的颜色代表为某一类,点周围的空白可以看作为预测集。现要按照距离的大小将整个图像分为不同颜色的区域。当k为1时分类结果如右图所示,可以看到图中紫色区域中包含了一小点绿色区域,按照经验来看,在大量紫色点的附近出现的最有可能的是紫色区域,但由于这个绿点(实际上称该点为噪声)的存在,使得结果出现了误差。就像下面这张图,让我们来预测一下虚线点最有可能是什么颜色。当然是红色。回到knn算法的思想,当我们仅用一个最小值来判断该点的颜色,那么就有可能出现判断错误的情况。
那么就可以将knn算法中的k值取其他值,当k等于5的时候,分类结果如下图所示,在大量红色点的周围都是红色区域,在大量紫色点的周围都是紫色区域,在大量绿色点的周围都是绿色区域,这种情况符合我们经验的预测。
回到knn算法上,若当k取5时,则表示在训练集中找到5张与该预测图像相似的图片,看着5张图片的标签哪一个出现的次数最多,出现次数最多的即为该预测图像的标签。若出现次数一样多则表示为图中的空白区域。
knn算法中k值的理解相关推荐
- 【机器学习】KNN算法及K值的选取
KNN算法是有监督学习中的分类算法,它看起来和另一个机器学习算法K-means有点像(K-means是无监督学习算法),但却是有本质区别的. KNN的原理就是:当预测一个新的值x的时候,根据它距离最近 ...
- k近邻算法之 k值的选择
k近邻算法之 k值的选择 举例说明: K值过小: [过拟合] 容易受到异常点的影响 [如:美人鱼本身就是喜剧片,假如统计的时候记为动作片,则对预测值的影响太大] k值过大: [欠拟合] ...
- K-近邻算法之K值的选择(带案例)
三.K值的选择 K值选择问题,李航博士的一书「统计学习方法」上所说: 选择较小的K值,就相当于用较小的领域中的训练实例进行预测,"学习"近似误差会减小,只有与输入实例较近或相似的训 ...
- KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别
首先感谢博主倔强的小彬雅,本文使用的素材及部分代码来源其博文机器学习入门-用KNN实现手写数字图片识别(包含自己图片转化),需要下载素材的可以到其博文最后进行下载. 关于KNN算法 knn算法也叫K临 ...
- 机器学习里如何确定K-Means算法的K值?
[问题] Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少.Kmeans算法对初始值是比较敏感的,对于同样的k值,选取的点不同,会影响算法的聚类效果和迭代的次数. [解决方案] ...
- 聚类算法中 K均值聚类(KMeans)的python实现
** 聚类算法中 K均值聚类(KMeans)的python实现 ** import numpy as np import matplotlib.pyplot as plt from sklearn.d ...
- Kmeans算法肘部法则--Kmeans算法确定K值
肘部法则对于K-means算法的K值确定起到指导作用,很多人在用K-means算法的时候可能不知道如何确定K取多少比较好,在面试也会遇到K值确定的问题.肘部算法可以有效解决这个问题 简单叙述一下肘部法 ...
- 关于二分查找算法中中间值的获取
关于二分查找算法中中间值的获取 //left是左边元素索引的变量,right是右边元素索引的变量 int mid = (left + right) / 2; //这样写的话可能会出现问题,当数组中的元 ...
- 复杂网络 介数中心性 java_复杂网络算法中K—shell与介数中心性算法的实现
! // 文章编号:1007-1423(2014)17-0007-05 DOI:10.3969~.issn.1007-1423.2014.17.002 复杂网络算法中K-shel与介数中心性算法的实现 ...
最新文章
- 【转载】DotNet 资源大全中文版
- U-Boot 之四 构建过程(Kconfig 配置 + Kbuild 编译)详解
- Redis与Lua详解
- 查询排序_Mysql在排序和查询时不使用索引的情况
- 同态加法_同态—当旧趋势突然变酷时
- 拥抱.NET Core系列:MemoryCache 缓存选项
- Java中startWith方法的使用!
- mysql hql查询语句_常用HQL语句
- PAT 1153 Decode Registration Card of PAT (25 分)- 甲级
- Nginx页面乱码问题
- 在OLT上查看SLAN
- python2 与 python3的区别
- leaflet+vue:色斑图的实现大体步骤
- win10未能连接网络连接到服务器,win10以太网无法连接网络解决办法
- 【历史上的今天】2 月 4 日:Unix 之父诞生;Facebook 上线;微软大洗牌
- 公司java项目上线生产环境发布流程
- BAT解密:互联网技术发展之路(1) - 技术发展的驱动力
- 2022云计算真题:日志分析服务
- 【计算机组成原理】计算机系统结构笔记:合集
- 数据库课程设计(电脑配件库存管理系统)
热门文章
- win10(家庭版)怎么修改“c:\users”目录下文件夹名称
- python库在哪个文件夹里_python库在哪个文件夹下
- 共建手机页游生态圈 腾讯助力Cocos秋季峰会
- 安卓4.3新功能:帅呆了!
- 什么是模板缓冲(Stencil Buffer)
- 【酷熊科技】工作积累 ----------- C#自动添加using引用命名空间
- wget: 无法解析主机地址 “repo.mysql.com”
- windows下软件推荐
- AppleScript入门
- QT实现 字符串 数学公式运算