【机器学习】K-Nearest Neighbor KNN算法原理简介及要点

KNN算法用于分类

    • 简介
    • KNN分类算法的流程
    • 距离度量
    • K值选择
    • 分类表决
      • 加权分类表决

简介

KNN的全称是K Nearest Neighbors. 这种算法可以被用来进行分类,原理是根据离特征点最近的K个点所属的类别进行分类。

KNN分类算法的流程

  • KNN算法的整体流程是我们需要将训练数据的特征点全部输入,这些特征点,假设有N维。
  • 输入需要预测的特征点,对这个特征点和之前所输入的训练数据的特征点,使用距离函数来求距离。
  • 选取K个距离最近的特征点,进行分类表决,即使用其中数量最多的分类来作为我们所求特征点的分类。

距离度量

KNN的输入的训练数据是N维特征向量,需要把我们已知的点的N维特征向量输入到模型中,进行预测时,需要将我们所需要预测的点的特征向量,计算其到已知的特征向量的距离,这个距离可以使用多种方式来进行计算,包括明氏距离曼哈顿距离欧式距离等。
曼哈顿距离是指的每一维度上的距离的加和。直观上来理解,就相当于我们看到了曼哈顿地区的地图,大楼方方正正,然后我们沿着地图上的路来行走,有直行有拐弯,而不是说直接穿越建筑使用直线上最短的路径来行走,这样得到的距离称为曼哈顿距离,也称为出租车距离。曼哈顿距离的概念在地图导航中经常被使用,因为我们在地图导航的时候不能直接穿过建筑,而是要沿着比较规则的路来行驶。
欧式距离,直观上理解,在数据为二维或三维时,就相当于在二维或三维空间中的两个点的直线距离。在更高维度的空间中,因为我们的特征向量有可能是N维的,所以涉及到这个问题。在向量为高维时,其计算方法就相当于两个向量的相应维度的差值的平方之和,最后取取平方根。这可以通俗的理解为二维,三维或更高维度的几何距离。

K值选择

第二个需要注意的问题是K值的选择。如果我们把K值选的过大,这样可能会导致欠拟合。假设我们取极端情况,K值等所有训练样本的特征点的数量。在这种情况下,任何一个需要判断分类的点,我们只需要输出所有特征向量中类别所对应数量最多的那个类别即可。当这个情况下,我们说出现了欠拟合(Underfit)
在K值过小的时候,会出现过拟合(Overfit)。在这种情况下,我们输入的任何数据,它的输出就是距离它最近的一个点的类别。在这种情况下,我们考虑的样本非常少,所以说难以得到其真正有实际意义的归属,分类容易被少量样本左右。
这里K值可以选一个奇数值,以防止出现多种类别数量相同的情况。

分类表决

计算完特征值后,对特征点的归属进行分类表决。分类表决就是说在K个距离最近的邻居中,哪个分类出现的次数最多,我们新的特征点就认为是哪个分类的,这是平均权值的分类表决。

加权分类表决

还有加权分类表决,可以给不同的特征点赋予不同的权重,然后以类别为分别计算加权分数,得到各个类别的最终分数,新的特征点就属于类别分数大的这一类

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

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

相关文章

智体链:大语言模型协作完成长上下文任务

25年1月来自Penn State U和谷歌云的论文“Chain of Agents: Large Language Models Collaborating on Long-Context Tasks”。 解决有效处理长上下文的挑战已成为大语言模型 (LLM) 的关键问题。出现了两种常见策略:1)减少输入长度,例如通过检…

java s7接收Byte字节,接收word转16位二进制

1图: 2.图: try {List list getNameList();//接收base64S7Connector s7Connector S7ConnectorFactory.buildTCPConnector().withHost("192.168.46.52").withPort(102).withTimeout(1000) //连接超时时间.withRack(0).withSlot(3).build()…

机器学习在癌症分子亚型分类中的应用

学习笔记:机器学习在癌症分子亚型分类中的应用——Cancer Cell 研究解析 1. 文章基本信息 标题:Classification of non-TCGA cancer samples to TCGA molecular subtypes using machine learning发表期刊:Cancer Cell发表时间:20…

Redis --- 使用HyperLogLog实现UV(访客量)

UV 和 PV 是网站或应用数据分析中的常用指标,用于衡量用户活跃度和页面访问量。 UV (Unique Visitor 独立访客): 指的是在一定时间内访问过网站或应用的独立用户数量。通常根据用户的 IP 地址、Cookies 或用户 ID 等来唯一标识一个用户。示例&#xff1…

大学资产管理系统中的下载功能设计与实现

大学资产管理系统是高校信息化建设的重要组成部分,它负责记录和管理学校内所有固定资产的信息。随着信息技术的发展,下载功能成为提高资产管理效率的关键环节之一。 系统架构的设计是实现下载功能的基础。一个良好的系统架构能够确保数据的高效传输和存储…

Vue 3 中的 el-tooltip 详解:语法、示例及与其他框架对比

目录 前言1. 基本知识2. 实战Demo 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. 基本知识 el-tooltip 是 Element Plus(Vue 3 组件库)中的一个用于提示的组件,它可以在…

Day 31 卡玛笔记

这是基于代码随想录的每日打卡 491. 非递减子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等&#xff0…

docker /var/lib/docker/overlay2目录把磁盘空间占满问题

1、查看服务器磁盘空间 df -h果然100%了,docker系统文件把磁盘空间占满了。 2、进入overlay2目录,查找那个容器工作目录占用最高 cd /var/lib/docker/overlay2du -h --max-depth1详见下图 好家伙占用110G!复制目录名称2c3c48ccac533c5d4a366d45a19bb9…

02vue3实战-----项目目录详解

02vue3实战-----项目目录详解 1.目录完整结构2.extensions.json文件3.node_modules文件夹4.public文件夹5.src文件夹6.文件.gitignore7.文件env.d.ts8.文件index.html9.文件package-lock.json和文件package.json10.文件README.md11.文件vite.config.ts12.文件tsconfig.json和文…

【蓝桥杯嵌入式】4_key:单击+长按+双击

全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 将4个按键的引脚设置为input,并将初始状态设置为Pull-up(上拉输入) 为解决按键抖动的问题,我们…

qt部分核心机制

作业 1> 手动将登录项目实现,不要使用拖拽编程 并且,当点击登录按钮时,后台会判断账号和密码是否相等,如果相等给出登录成功的提示,并且关闭当前界面,发射一个跳转信号,如果登录失败&#…

Spring Boot启动内嵌tocmat原理

要研究Spring Boot启动内嵌tomcat的原理,就需要先了解一下Spring Boot自动配置的过程,首先简要的梳理一下springboot自动配置的步骤。 一、SpringBoot自动配置 当SpringBoot应用启动时,EnableAutoConfiguration注解被激活,该注解…

【论文阅读】Comment on the Security of “VOSA“

Comment on the Security of Verifiable and Oblivious Secure Aggregation for Privacy-Preserving Federated Learning -- 关于隐私保护联邦中可验证与遗忘的安全聚合的安全性 论文来源摘要Introduction回顾 VOSA 方案对VOSA不可伪造性的攻击对于类型 I 的攻击对于类型 II 的…

idea隐藏无关文件

idea隐藏无关文件 如果你想隐藏某些特定类型的文件(例如 .log 文件或 .tmp 文件),可以通过以下步骤设置: 打开设置 在菜单栏中选择 File > Settings(Windows/Linux)或 IntelliJ IDEA > Preference…

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…

区块链技术:Facebook 重塑社交媒体信任的新篇章

在这个信息爆炸的时代,社交媒体已经成为我们生活中不可或缺的一部分。然而,随着社交平台的快速发展,隐私泄露、数据滥用和虚假信息等问题也日益凸显。这些问题的核心在于传统社交媒体依赖于中心化服务器存储和管理用户数据,这种模…

Redis数据库篇 -- Pipeline

一. 什么是Pipeline 在传统的请求-响应模式中,客户端与服务器之间的通信流程如下: 客户端发送一个命令到服务器。服务器接收命令并执行。服务器将执行结果返回给客户端。客户端接收结果后,发送下一个命令 在这种传统的模式下,…

[权限提升] Linux 提权 维持 — 系统错误配置提权 - 计划任务提权

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:Linux 计划任务提权原理 Linux 计划任务提权是由于管理员配置不当,导致以 Root 权限运行的计划任务文件可以被低权限用户修改,从而被攻击者利用&#…

GB/T 43698-2024 《网络安全技术 软件供应链安全要求》标准解读

一、43698-2024标准图解 https://mmbiz.qpic.cn/sz_mmbiz_png/rwcfRwCticvgeBPR8TWIPywUP8nGp4IMFwwrxAHMZ9Enfp3wibNxnfichT5zs7rh2FxTZWMxz0je9TZSqQ0lNZ7lQ/640?wx_fmtpng&fromappmsg 标准在线预览: 国家标准|GB/T 43698-2024 相关标准: &a…

记一次golang环境的变化

前两天编译打包了了个文件,把env的 goos 搞坏了 导致运行项目一直报错 先是这样 go: unsupported GOOS/GOARCH pair windows/amd64再是这样 /amd64supported GOOS/GOARCH pair linux咱就说,咱也是知道环境配置的有问题 ( go env GOOS &…