什么是K-近邻算法?

news2024/11/24 20:39:01

一、什么是K-近邻算法?

K近邻算法(K-Nearest Neighbors,简称KNN)是一种基本的分类和回归算法。它的基本原理是通过测量样本之间的距离来对未知样本进行分类或预测。KNN算法被归类为一种“懒惰学习”(lazy learning)算法,因为它没有显式地从训练数据中学习模型,而是在需要进行分类或预测时才对训练数据进行计算。

二、K-近邻算法的工作流程

  • 准备训练数据集,包括输入特征和对应的标签 ;
  • 选择一个合适的距离度量方法,如欧氏距离或曼哈顿距离;
    • 欧式距离:在这里插入图片描述
      其中, n表示样本向量的维度,xi和yi分别表示向量x和向量y在第i维上的取值。
    • 曼哈顿距离:在这里插入图片描述
      其中,n表示样本向量的维度,xi和yi分别表示向量x和向量y在第i维上的取值。
  • 对于一个未知样本,计算它与训练集中每个样本的距离 ;
  • 根据选定的K值,选择距离最近的K个样本 ;
  • 根据这K个样本的标签,通过多数投票的方式确定未知样本的类别(对于分类问题)或计算平均值(对于回归问题) 。

三、“连续属性”和“离散属性”的距离计算

我们常将属性划分为“连续属性”和“离散属性”,前者在定义域上有无穷多个可能的取值,后者在定义域上是有限个取值。

  • 若属性值之间存在有序关系,则可以将其转化为连续值,例如:身高属性“高”、“中”、“矮”,可转化为{1、0.5、0}。
    • 闵可夫斯基距离可以用于有序属性。
  • 若属性值之间不存在序关系,则通常将其转化为向量的形式,例如:性别属性“男”、“女”,可转化为{(1,0) , (0,1)}

四、K值怎么选择?

  • 举例说明

在这里插入图片描述

  • K值过小:
    • 容易受到异常点的影响:假如K值取1,但是距离最小的那个数据是异常数据,那么预测就会发生错误。
    • 选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,但“学习”估计误差会增大。换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合
  • K值过大:
    • 受到样本均衡的问题:假如K值取6,则距离最小的6个值,有三个属于喜剧片,有三个属于动作片。此时,预测就会发生错误。
    • 选择较大的K值,就相当于用较大领域中的训练实例进行预测,优点是可以减少“学习”估计误差,但会增大“学习”近似误差。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值得增大就意味着整体的模型变得简单
  • 近似误差:
    • 对现有训练集的训练误差,关注训练集
    • 如果近似误差过小可能会出现过拟合的现象,对现有的训练集能有很好的预测,但是对未知的测试样本将会出现较大偏差的预测
    • 模型本身不是最接近最佳模型
  • 估计误差:
    • 可以理解为对测试集的测试误差,关注测试集
    • 估计误差小说明对未知数据的预测能力好
    • 模型本身最接近最佳模型

在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是把训练数据在分成两组:训练集和测试集)来选择最优的K值。

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

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

相关文章

【K8s】安全认证与DashBoard

文章目录 一、概述1、客户端2、认证、鉴权与准入控制 二、认证管理1、认证方式2、HTTPS证书认证 三、授权管理1、授权与RBAC2、Role 与 ClusterRole3、RoleBinding 与 ClusterRoleBinding4、案例:创建一个只能管理dev空间下Pods资源的账号 四、准入控制五、DashBoar…

【ARMv8 编程】A64 流控制指令

A64 指令集提供了许多不同种类的分支指令。对于简单的相对分支,即那些从当前地址偏移的分支,使用 B 指令。无条件简单相对分支可以从当前程序计数器位置向后或向前分支最多 128MB。 有条件的简单相对分支,其中条件代码附加到 B,具…

用Pin对二进制文件自动脱壳

Intel Pin Intel Pin在可执行二进制代码中插入一些探测函数,用于观察、记录、分析宿主代码执行过程中的一些与计算机体系结构相关的特性,如访存指令,寄存器内容,寄存器地址等,通过Pin提供的API可以编写各种分析函数,这样程序运行完以后,统计和分析结果也同时产生,分析…

solidworks2020及麦迪工具箱安装

1、麦迪工具箱安装 1)下载 下载链接:www.maidiyun.com/download 下载今日制造 2)安装 由于电脑上安装了杀毒软件,会直接删除解压后的安装包,因此需要关闭杀毒软件或者在被删除后进入杀毒软件的隔离区将该文件添加…

网站信息收集

网站信息收集 ip信息收集 域名Whois查询 - 站长之家 Whois查询 http://tool.chinaz.com/ 站长工具 https://dns.aizhan.com/ 爱站网 ping检测 ip反查域 https://x.threatbook.cn/ 微步在线 https://toolbar.netcraft.com/site_report 网站查询 http://tool.chinaz.com/n…

JECloud 运行前端模块所遇到的问题(持续学习汇总)

1.依赖安装问题 官网 JECLoud 前端打包部署 1.1 部署前 注意 可以先下载 jecloud-libs 项目 尝试 部署安装 node版本不能过高!选择node v14.17.5 版本 在部署前 如果当前node版本过高可以使用 nvm工具 切换到低版本, 但是需要注意的是 切换版本时 …

判断数组中各个元素是否为实数numpy.isreal()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断数组中各个元素是否为实数 numpy.isreal() 选择题 以下程序的运行结果是? import numpy as np anp.array([11j,2j,3.4,5]) print("【显示】a:");print(a) print("【执行】…

Java+Demo 使用java的URLConnection类下载网络文件和支持断网断点续传的简单应用

记录一下使用java的URLConnection类和File类下载网络文件和支持断网断点续传的简单方式 java URLConnection类的结构 demo代码假设下载python的安装包 https://www.python.org/ftp/python/3.10.8/python-3.10.8-amd64.exeFileDownloadUtilsDemo1.java package boot.example…

【ARMv8 编程】A64 系统控制和其他指令

A64 指令集包含与以下相关的指令: 异常处理。系统寄存器访问。调试。提示指令,在许多系统中都有电源管理应用程序。 一、异常处理指令 存在三个异常处理指令,其目的是引发异常。这些用于调用在操作系统(EL1)、Hyper…

004、PG实例结构

实例结构 1、PostgreSQL实例2、建立一个连接和创建一个会话3、初始化参数文件4、postgresql.conf参数文件5、postgresql.auto.conf参数文件6、参数生效条件7、Memory Architecture8、Process Architecture9、Postgres Server Process10、Backend Processes11、Background Proce…

Linux:split命令、paste命令、ecal命令和正则表达式

Linux:split命令、paste命令、ecal命令和正则表达式 一、split命令二、paste命令三、eval命令四、正则表达式五、实验与应用 一、split命令 split命令—Linux下将一个大的文件拆分成若干小文件语法格式 split 选项 参数 原始文件 拆分后文件名前缀常用选项 选项说…

Claude不能用了?我来帮你

前几天,我在《不需要等待列表,也不用魔法上网的Claude,能否比肩ChatGPT?》一文中,介绍了ChatGPT的同门师兄Claude的注册使用教程。许多同学按照我的教程,很快就无痛使用上了类似ChatGPT的服务。 403 Forbid…

WGCNA | 不止一个组的WGCNA怎么分析嘞!?~(二)(共识网络分析-第二步-构建网络与模块-分步法)

1写在前面 不知道各位最近过得怎么样,昨天去修了脚🦶,感觉自己马上就要迈入油腻中年人的行列了。🥲 不过说实话,还是挺舒服的,值得再去一次。😅 接着更一下WGCNA的教程吧,还是值得大…

TypeScript-基础类型

目录 介绍 布尔值 数字 字符串 数组 元组 Tuple 枚举 Unknown Any Void Null 和 Undefined Never Object 类型断言 关于 Number, String, Boolean, Symbol 和 Object 介绍 在TypeScript中,我们能够处理一些数据单元,例如:数字…

【JavaWeb】-- HTML、CSS、JavaScript

文章目录 HTML1.基本介绍2.快速入门3.基础标签3.1 标题标签3.2 hr标签3.3 字体标签3.4 加粗、斜体、下划线标签3.5 居中标签 4.图片、音频、视频标签5.超链接标签6.列表标签7.表格标签8.布局标签9.表单标签9.1 表单标签概述9.2 form标签属性9.3 代码演示 10.表单项标签 CSS1.概…

【Prompting】ChatGPT Prompt Engineering开发指南(5)

ChatGPT Prompt Engineering开发指南:Transforming 翻译通用翻译器音调转换格式转换拼写检查/语法检查内容来源 在本教程中,我们将探讨如何使用大型语言模型来进行文本转换任务,例如语言翻译,拼写和语法检查,音调调整和…

怎么画邻接表?不用邻接矩阵也能画?

目录 一、有向图的邻接表 二、无向图的邻接表 一、有向图的邻接表 最简单粗暴的方式就是把某个顶点发出的箭头指向的顶点全作为单个结点连接到此顶点的后面。结点数等于边数。 按正常思路的话,是一种递归遍历。 1.选一个点作为出发点。比如选一个v0。 2.从第一出…

Kali-linux控制Meterpreter

Meterpreter是Metasploit框架中的一个杀手锏,通常作为利用漏洞后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给用户一个控制通道。当使用Armitage、MSFCLI或MSFCONSOLE获取到目标系统上的一个Meterpreter连接时,用户必须使用Meterpreter传…

【C++】leetcode力扣 剑指 Offer 题解

文章预览: 剑指 Offer 03. 数组中重复的数字剑指 Offer 04. 二维数组中的查找剑指 Offer 05. 替换空格剑指 Offer 06. 从尾到头打印链表剑指 Offer 07. 重建二叉树剑指 Offer 09. 用两个栈实现队列剑指 Offer 10- I. 斐波那契数列剑指 Offer 10- II. 青蛙跳台阶问题…

大模型训练数据多样性的重要性

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…