KNN算法总结

news2024/10/7 18:31:48

概述

邻近算法,或者说K最邻近(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。近邻算法就是将数据集合中每一个记录进行分类的方法。

KNN是一个基本的分类和回归的算法,它是属于监督学习中分类方法的一种。

KNN算法流程

  1. 给定训练集和测试集,根据训练集来进行模型的构建
  2. 在测试集中依次选取每一个元素,选取距离最近的K个元素
  3. 统计K个元素中每个类别的数量,将此元素归类为数量最多的类别

KNN算法核心思想

KNN算法是一个分类算法,一般常用于分类或回归问题。当预测一个样本应该归为哪个类时,根据它距离最近的 K 个样本点是什么类别来判断该新样本属于哪个类别(多数投票)。

绿色的点是新加入的点,当K=3时,选择距离最近的3个点,其中有2个蓝色,1个红色,则会被分类为蓝色,

当K=5时,选择距离最近的5个点,其中有3个红色,2个蓝色,则会被分类为红色

其中,主要考虑的两个问题分别是K值选取和距离计算

KNN中需要考虑的三个问题

K值选取

显然,K值并不是越小越好也不是越大越好,而是差不多才好,
如果K值太小,分类的错误率会比较高,
如果K值太大,那么分类就会一直向其中某一类靠,
所以,K值取一个合适的值是最重要的,这个值怎么选取是我们需要思考的,

使用交叉验证来确定K值选取

交叉验证:在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。
也就是说,在给定的数据集中,拿出大部分比例的数据进行模型的构建,保留小部分的数据进行模型的验证,来对错误率进行记录。

距离计算

KNN中,一般采用欧式距离或者曼哈顿距离来进行计算

欧氏距离算法

d ( x , y ) : = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + ⋯ + ( x n − y n ) 2 = ∑ i = 1 n ( x i − y i ) 2 d(x,y):=\sqrt{\left(x_1-y_1\right)^2+\left(x_2-y_2\right)^2+\cdots+\left(x_n-y_n\right)^2}=\sqrt{\sum_{i=1}^n\left(x_i-y_i\right)^2} d(x,y):=(x1y1)2+(x2y2)2++(xnyn)2 =i=1n(xiyi)2

曼哈顿距离算法

d ( x , y ) : = ∣ x 1 − x 2 ∣ + ⋯ + ∣ y n − y n ∣ d(x,y):=\mid x_{1}-x_{2}\mid+\cdots+\mid y_{n}-y_{n}| d(x,y):=∣x1x2++ynyn

欧式距离和曼哈顿距离都是闵可夫斯基距离,

闵可夫斯基距离

ρ ( A , B ) = ( ∑ i = 1 n ∣ a i − b i ∣ p ) 1 p \rho(A,B)=(\sum_{i=1}^n|a_i-b_i|^p)^{\frac1p} ρ(A,B)=(i=1naibip)p1

当p=1时,变成曼哈顿距离;

当p=2时,变成欧式距离;

当p趋于无穷时,变成切比雪夫距离;

决策规则

确定如何将新的未分类数据点分配到已知的类别中。这通常是通过投票机制实现的,一般为将新点的预测标签设置为最多数量的类别的标签。

KNN优缺点

优点:

  1. 算法逻辑简单。
  2. 很少的训练,或者说不需要训练。
  3. 无特定数据分布假设。不对数据分布作出假设,完全基于距离度量对样本特征进行提取
  4. 预测效果较好,容错能力强。对于异常值的处理能力较强,不易受异常值的影响
  5. 适用于多类别问题。既可以用于分类,也可以用于回归问题,且可以进行非线性分类;

缺点:

  1. 内存要求高。在进行预测时,需要存储所有的训练数据在内存中
  2. 计算成本高。当特征数较多时,计算的成本会很大
  3. K值选取重要。对于上文所说的K值选取如果不当,会出现很大的误差
  4. 样本不平衡问题。当某些类别的样本数量极不均匀时,KNN算法可能无法正确分类

KNN应用场景

图像分类:识别人脸、车牌等。

文本分类:垃圾邮件过滤、情感分析等。

推荐系统:根据用户的历史行为推荐商品、音乐等。

数据挖掘:寻找异常值、聚类等。

生物信息学:基因分类、蛋白质分类等。

财务分析:预测股票价格、评估信用风险等。

参考:
https://blog.csdn.net/m0_74405427/article/details/133714384
https://cloud.tencent.com/developer/techpedia/1686/11502
https://cloud.tencent.com/developer/article/1719993

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

备战蓝桥杯---动态规划(入门3之子串问题)

本专题再介绍几种经典的字串问题。 这是一个两个不重叠字串和的问题,我们只要去枚举分界点c即可,我们不妨让c作为右区间的左边界,然后求[1,c)上的单个字串和并用max数组维护。对于右边,我们只要反向求单个字串和然后选左边界为c的…

真怕了,冻雨天气没有雪地胎怎么活

文 | AUTO芯球 作者 | 王秦 南方过年太苦了 刚暖和2天 又开启冻雨模式 过年前的冰冻阴影还没过去啊 这车都不敢开出去了啊 冰冻天气,雪天行车是一件很考验技术和运气的事情啊, 因为什么? 滑,对吧。 那么有哪些装备可以让…

如何找回丢失照片? 7 种免费照片恢复方法分享

照片可以勾起回忆,让我们想起与最亲近的人一起度过的时光,这就是为什么仅仅丢失一张重要照片就会让人感觉完全毁灭性的——几乎就像你失去了记忆本身一样。好消息是,大多数丢失或意外删除的照片都可以使用照片恢复软件恢复,而且我…

做外贸的你是如何看待2024?

说到2024年的市场行情,有人说会比2023年要好很多。也有人说可能还不如去年,竞争可能会更加的激烈。 而且从各个博主的观点看来,俄罗斯市场似乎成了一个比较热门的话题,有人说今年我们大家应该主攻俄罗斯市场,现在俄罗斯…

云原生之容器管理工具Portainer

1. 简介 前面文章我们讲Docker、Docker Compose和Docker Swarm都是在Linux系统上手工命令行去操作,在第一次安装的时候可以命令行,以后运维和CICD流程操作中,如果还要命令行去各个节点操作,操作就麻烦了,工作效…

Rabbitmq入门与应用(四)-RabbitMQ常见模式

RabbitMQ常见Queue模式 简单模式 点对点模式,一个生产者一个消费者 生产者将消息发送到队列,消费者从队列中获取消息,队列是存储消息的缓冲区。 查看管理端效果 序列化解决方案 基于java序列化基于Json Bean public MessageConverter mess…

CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

《嵌入式工程师自我修养/C语言》系列——CPU是如何工作的?什么是冯诺依曼架构和哈弗架构? 一、CPU内部结构及工作原理1.1 CPU的结构1.2 CPU工作流程举例 二、计算机体系结构2.1 冯诺依曼架构2.2 哈弗架构 三、总结 快速学习嵌入式开发其他基础知识&#…

塔罗星卜算大全系统源码带完整的安装代码包以及安装部署教程

塔罗星卜算大全系统源码是一款结合古老塔罗牌智慧与现代技术的占卜工具。它旨在为广大塔罗爱好者提供一个全面、便捷、高效的在线占卜平台。通过这款系统,用户可以轻松进行塔罗占卜,获取个性化的解读和建议。 以下是部分代码示例: 系统特色功…

【零基础学习CAPL】——CAN报文的发送(面板中直接修改信号值进行发送)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建3.系统变量创建4.系统变量与Panel值绑定4.CAPL实现5.效果6.全量脚本1.概述 在前面文章”【零基础学习CAPL】——CAN报文的发送(按下按钮同时周期性发送)“中对于发送报文中的信号是在脚本中固…

Spring Boot 笔记 027 添加文章分类

1.1.1 添加分类 <!-- 添加分类弹窗 --> <el-dialog v-model"dialogVisible" title"添加弹层" width"30%"><el-form :model"categoryModel" :rules"rules" label-width"100px" style"padding…

程序员金三银四跳槽指南:时间线经典面试16问

祝大家成功上岸&#xff0c;升职加薪&#xff0c;冲鸭 &#x1f389; 金三银四 今天复工&#xff0c;就要开始准备啦&#x1f4bc;✨ 把握好打工人跳槽的金三银四&#xff0c;获得满意的新工作 &#x1f389; 时间线 年后跳槽时间线&#xff0c;过完年刚好开始准备&#xf…

【Jvm】类加载机制(Class Loading Mechanism)原理及应用场景

文章目录 Jvm基本组成一.什么是JVM类的加载二.类的生命周期阶段1&#xff1a;加载阶段2&#xff1a;验证阶段3&#xff1a;准备阶段4&#xff1a;解析阶段5&#xff1a;初始化 三.类初始化时机四.类加载器1.引导类加载器&#xff08;Bootstrap Class Loader&#xff09;2.拓展类…

【Wio Terminal】输入/输出

输入/输出 一、概述1、硬件原理图Terminal引脚分布及功能Wio Terminal Grove端口引脚分配 二、使用Wio Terminal上的Grove模拟端口1、RPI 模拟引脚2、Grove引脚配置3、示例 三、使用 Wio Terminal上的Grove数字端口1、RPI 数字引脚2、Grove引脚配置将 Grove I2C 端口用作数字端…

mqtt 协议的概念和理解

一、概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的”轻量级”通讯协议&#xff0c;该协议构建于TCP/IP协议上&#xff0c;由IBM在1…

前后端分离(delivery-management)部署文档

1. 前端项目:delivery-management 1.1. 前端项目打包 执行命令:npm run build 或者yarn run build,生成dist目录。 构建流程如下图: 1.2. 文件上传 将打包好的前端项目(dist目录),上传到服务器,并拷贝到nginx安装目录html目录下。 执行上传命令(sftp):put -r E:\…

WildCard:一个因太好用而被迫暂停服务的虚拟信用卡平台,魅力何在?

如果你需要使用Wildcard开通GPT4、Midjourney或是Only方式的话&#xff0c;请点击&#xff1a;WildCard使用教程 参考文章链接&#xff1a;WildCard&#xff1a;一个因太好用而被迫暂停服务的虚拟信用卡平台&#xff0c;魅力何在&#xff1f; 1、Wildcard用户数量激增&#x…

模拟电子技术——振荡器基本原理、RC桥式振荡器、矩形波发生电器

文章目录 前言一、振荡器什么是振荡器振荡器的基本电路结构振荡条件起振条件和稳幅原理 二、RC桥式振荡器什么是RC桥式振荡器RC串并联网络的选频特性振荡条件完整频率特性曲线举例 三、矩形波发生电器什么是矩形波发生电路稳态与暂态PWM脉宽调制矩形波发生电路基本组成 总结 前…

单线程传奇Redis,为何引入多线程?

大家都知道 Redis 的速度非常的快&#xff0c;这其中一个关键原因就是它采用了单线程模型&#xff0c;这也是它的一大独特之处。那么问题来了&#xff0c;既然单线程模型已经如此出色&#xff0c;为什么后续版本还要搞上多线程呢&#xff1f; 本文主要分析一下多线程在Redis中的…

【知识整理】PHP研发组代码规范要求

一、目标 统一代码风格、命名规范&#xff0c;增强代码可读性和可维护性&#xff0c;供日常开发工作中时参考&#xff0c;以提高团队协作的开发效率。 二、编程规约 PHP代码规范[PSR-12] 特别注意&#xff1a; 1、业务代码内对 常量、变量(分页值、版本号、向下参数等)、魔法值…

定制红酒:如何将客户的个性化需求融入红酒设计

云仓酒庄洒派深知每个客户都有自己的品味和偏好&#xff0c;因此&#xff0c;他们致力于将客户的个性化需求融入红酒设计中。以下是一些主要的方法和策略&#xff1a; 1. 深入了解客户需求&#xff1a;在开始设计之前&#xff0c;云仓酒庄洒派会与每位客户进行深入的沟通&#…