首页 > 编程语言 >机器学习中的算法——K最邻近算法(KNN)

机器学习中的算法——K最邻近算法(KNN)

时间:2023-12-16 20:56:28浏览次数:27  
标签:KNN 邻近 个点 分类 算法 拟合 类别

1.KNN算法的定位

KNN算法属于分类算法,所以它是有监督学习里面的一部分,且属于有监督学习里的分类问题

  • KNN的计算量很大
  • KNN理论上比较成熟且算法简单易懂,易实现

2.KNN算法的核心

  • 简单地说---“近朱者赤,近墨者黑”

  • 进行分类的时候,即将被分类的这个样本的附近(特征空间中最邻近)离它最近的K个节点数量中,K个中哪个类的节点数量最多,它就是属于那一类
  • K就是离样本最近的所有节点数量
  • K是超参数,需要通过验证集不断更新完善
如上图:此时K=5,黄色的点是样本,即将对它进行预测,所以此时找到它最近的5个点分别是图中小圆圈圈起来的部分,五个里面红色居多,所以就把它归为红色这一类。

3.KNN的操作方法:

  • 分类预测:多数表决,就是刚刚说的
  • 回归预测:平均值法,就是取点数量的平均值作为判断基准

4.K值对KNN分类的影响

过拟合和欠拟合

很显然的K值不是越大越好

  • K越大,可以想象当他无穷大,要找到很多个点,而这很多个点里面可能一个类只有一个点,很多类别,极端的情况是一个类仅有一个点,进来的每一个自成一类,所以会导致分类分出来很粗糙,类的区分度不大,就会产生欠拟合
  • K越小,最小取为1,类似的,分类分的很细,以至于最后分的类别很多,容易过拟合,当一个新的噪声点来的时候会严重偏离原来的类别,就是泛化能力很弱,过拟合产生

如上:当K很小,分得很细致,来一个新的点就会往中间突出的那个地方延申,当一个噪声点来时,就会导致分类误差很大。而当K不断变大,最后会变成全蓝或全红。

5.最后,总结

  • KNN:“近朱者赤,近墨者黑”;

  • KNN核心:找到最近的K个点,再在K个点里面找同类别点数最多的点,此类就是要归过去的类;

  • K为超参数需要不断更新完善;

  • 分类预测:多数表决;回归预测:平均值法;

  • K越大,欠拟合(因为分的类别很多,类与类的区分度太小,极端情况一类一个,进来的每一个自成一类);K越小欠拟合(分类分的很细,以至于最后分的类别很多);

标签:KNN,邻近,个点,分类,算法,拟合,类别
From: https://www.cnblogs.com/cyz666666/p/17908353.html

相关文章

  • 算法学习Day4两两交换,链表相交,环形链表
    Day4两两交换,链表相交,环形链表ByHQWQF2023/12/16笔记24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。解法:迭代法迭代法使用了虚拟头节点的技巧,迭代法代码class......
  • Kafka日志压实算法
    概念介绍我们有时候可以把Kafka当作key、value数据库用(当然kafka中的消息可以不指定key)。__consumer_offsets这个topic的数据,就是典型的key、value数据。/usr/local/kafka2.8/bin/kafka-run-class.shkafka.tools.DumpLogSegments--deep-iteration--print-data-log--files......
  • 【教3妹学编程-算法题】反转二叉树的奇数层
    3妹:“你不是真正的快乐,你的笑只是你穿的保护色”2哥 :3妹还在唱五月天的歌啊,你不知道五月天假唱,现在全网都在骂呢。3妹:知道啊,可是关我什么事,这个歌的确好听啊。2哥 :嗯嗯,不错,还以为你是脑残粉,无论黑白都只管追星呢。3妹:我是只管追歌的,歌好听就行啦。2哥 :追哥?追哪个哥,难......
  • 机器学习的方法主要可以分为以下几类¹²³: 1. **监督学习**:在监督学习中,我们有一个
    机器学习的方法主要可以分为以下几类¹²³:1.**监督学习**:在监督学习中,我们有一个标记的数据集,我们的目标是训练一个模型,使其能够预测新数据的标签。常见的监督学习算法包括:  -线性回归  -逻辑回归  -支持向量机(SVM)  -最近邻居(KNN)  -决策树......
  • KMP算法和Manacher算法
    KMP算法KMP算法解决的问题KMP算法用来解决字符串匹配问题:找到长串中短串出现的位置.KMP算法思路暴力比较与KMP的区别暴力匹配:对长串的每个位,都从头开始匹配短串的所有位.KMP算法:将短字符串前后相同的部分存储在\(next\)数组里,让之前匹配过的信息指导之后的匹配.......
  • 算法学习笔记四一插入排序
    目录什么是插入排序算法原理示例代码什么是插入排序插入排序可理解为扑克牌摸牌的过程,手中的牌为有序序列,然后随机摸一张牌,根据牌的大小插入到有序序列对应的位置。算法时间复杂度为O(n^2)算法原理默认列表第一个元素为基准,从第二个元素和第一个元素进行比较,并放入到相应位置......
  • 【教3妹学编程-算法题】用邮票贴满网格图
    3妹:“你不是真正的快乐,你的笑只是你穿的保护色”2哥 :3妹还在唱五月天的歌啊,你不知道五月天假唱,现在全网都在骂呢。3妹:知道啊,可是关我什么事,这个歌的确好听啊。2哥 :嗯嗯,不错,还以为你是脑残粉,无论黑白都只管追星呢。3妹:我是只管追歌的,歌好听就行啦。2哥 :追哥?追哪个哥,难......
  • 代码随想录算法训练营第三天|203.移除链表元素、707.设计链表、206.反转链表
    LeetCode 203.移除链表元素题目链接:203.移除链表元素原链表删除元素(需要区分头节点和非头结点)使用虚拟头节点,统一链表操作(注意:新链表头结点是虚拟头节点的下一节点) LetCode707.设计链表题目链接:707.设计链表注意:头节点采用虚拟头节点,使得链表操作具有一致性!!!单链......
  • 算法学习笔记三一选择排序
    目录什么是选择排序算法原理示例代码什么是选择排序选择排序的主要思想是(升序为例):第一次从待排序的数据元素中选出最小的一个元素,和数组的起始位置元素进行交换,然后再从剩余的未排序元素中寻找到最小元素,然后和未排序的序列的第一个元素进行交换。每次在未排序序列中选择一个最......
  • 算法学习Day3虚拟头指针,设计链表,反转链表
    Day3虚拟头指针,设计链表,反转链表ByHQWQF2023/12/15笔记203.移除链表元素给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。解法:虚拟头指针看起来非常简单,但是由于如果直接对原始的链表进行操作,如果头节点的v......