机器学习---KNN最近邻算法

news2024/9/20 14:12:20

1、KNN最近邻算法

K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一,有监督算法。该方法的思路是:如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法由你的邻居来推断出你的类别,KNN算法就是用距离来衡量样本之间的相似度。

如果K = 3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。

如果K = 5,绿色圆点的最近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。

K 值的选择,距离度量和分类决策规则是该算法的三个基本要素。K值的选择一般低于样本数据的平方根,一般是不大于20的整数。距离度量常用的有欧式距离,曼哈顿距离,余弦距离等,一般使用欧氏距离,对于文本分类,常用余弦距离。分类决策就是“少数服从多数”的策略。

2、KNN算法步骤

(1)、对于未知类别的数据(对象,点),计算已知类别数据集中的点到该点的距离。

(2)、按照距离由小到大排序

(3)、选取与当前点距离最小的K个点

(4)、确定前K个点所在类别出现的概率

(5)、返回当前K个点出现概率最高的类别作为当前点预测分类

3、KNN算法复杂度

KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么 KNN 的分类时间复杂度为O(n)

4、KNN问题

该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的 K 个邻居中大容量类的样本占多数。解决:可以采用权值的方法,根据和该样本距离的远近,对近邻进行加权,距离越小的邻居权值大,权重一般为距离平方的倒数。

5、KNN数据归一化

为了防止某一维度的数据的数值大小对距离计算产生影响,保证多个维度的特征是等权重的,最终结果不能被数值的大小影响,应该将各个维度进行数据的归一化,把数据归一化到[0,1]区间上。

归一化公式:newValue=\frac{(oldValue-min)}{max-min}

6、距离度量

欧式距离:

也称欧几里得距离,在一个N维度的空间里,求两个点的距离,这个距离肯定是一个大于等于零的数字,那么这个距离需要用两个点在各自维度上的坐标相减,平方后加和再开方。一维,二维,三维的欧式距离计算方法:

一维:d=\sqrt{(x_{1}-x_{2})^{2}}  

二维:d=\sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}))}

三维:d=\sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}+(z_{1}-z_{2})^{2}}

平方欧式距离:

就是欧式距离的平方

曼哈顿距离:

相比欧式距离简单的多,曼哈顿距离只要把两个点坐标的x坐标相减取绝对值,y坐标相减取绝对值,再加和,c=\left |x_{1} -x_{2} \right |+\left |y_{1} -y_{2} \right |  ,三维,四维以此类推。

余弦距离:

也叫余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。如果两个向量的方向一致,即夹角接近零,那么这两个向量就越相近。要确定两个向量方向是否一致,要用到余弦定理计算向量的夹角。

闵可夫斯基距离:

闵式距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性表述。定义:两个n维变量(可以理解为n维数组,就是有n个元素)a(x_{11},x_{12},.....,x_{1n}) 与b(x_{21},x_{22},.....,x_{2n})间的闵可夫斯基距离定义为:d_{12}=\sqrt[p]{\sum_{k=1}^{n}\left | x_{1k}-x_{2k} \right |^{p}}其中p是一个变参数,当p=1时,就是曼哈顿距离,当p=2时,就是欧式距离,当p \to \infty 就是切比雪夫距离。

 就是切比雪夫距离。

切比雪夫距离:

国际象棋中,国王可以直行、横行、斜行。国王走一步,可以移动到相邻的8个方格的任意一个。国王从格子(x_{1},y_{1})到格子x_{2},y_{2}最少需要多少步?这个距离就是切比雪夫距离。

切比雪夫距离公式简单理解为就是各坐标数值差的最大值,在2维空间中的计算公式为:

d=max(\left |x_{1} -x_{2} \right |,\left | y_{1} -y_{2} \right |)

谷本距离:

同时考虑余弦距离和欧式距离的测度。

加权距离测度

可以指定某一维度的权重比例,从而使某个权重的影响力更大。

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

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

相关文章

小米耳机定制音效选项灰色无法开启使用_开启定制音效_音效模式设置

使用环境:Redmi K50 Ultra +MIUI 14.0.11+定制音效选项是灰色的无法开启及音效模式无法选择 定制音效无法开启 音效模式无法选择(需下载小米耳机APP才能设置),根据提示解决问题即可 解决方法:关…

ICC2:low power与pg strategy(pg_mesh)

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 用pg_strategy创建power stripe,示例如下: set pd_list {{DEFAULT_VA VDD_DIG VDD_DIG VSS} {PD_DSP VDD_DIG VDD_DSP VSS} } ;#两个电源域,DEFAULT_VA和PD_DSP是对应voltage area名字,其中D…

硬件开发笔记(十六):RK3568底板电路mipi摄像头接口原理图分析、mipi摄像头详解

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134922307 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【神行百里】pandas查询加速之行索引篇

最近进行大数据处理的时候,发现我以前常用的pandas查询方法太慢了,太慢了,真是太慢了,查阅资料,遂发现了一种新的加速方法,能助力我飞上天,和太阳肩并肩,所以记录下来。 1. 场景说明…

章鱼网络进展月报 | 2023.11.1-11.30

章鱼网络大事摘要 1、2023年12月,Octopus 2.0 将会正式启动。 2、隐私协议 Secret Network 宣布使用 Octopus Network 构建的 NEAR-IBC 连接 NEAR 生态。 3、Louis 受邀作为嘉宾,在 NEARCON2023 的多链网络主题沙龙中发言:我们依然处于区…

Emacs之Plantuml用于复杂UML类图(Markdown用于简单类图)(一百三十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

FTP、U盘等传统数据安全摆渡方法的6个弊端

数据安全摆渡,即数据在不同的网络之间,进行安全流转。做网间隔离的初衷,就是为了保护数据安全,但是在数据摆渡时,除了安全,企业还是需要考虑其他的要素,比如可靠性、易用性、兼容性等等。而传统…

解决:TypeError: write() argument must be str, not Tag

解决:TypeError: write() argument must be str, not Tag 文章目录 解决:TypeError: write() argument must be str, not Tag背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报错&#xf…

Qt搭建MQTT编程环境

QT 部署官方MQTT模块 在Qt Creator中,默认是没有部署Mqtt模块的,在使用QT编程之前,先把mqtt 模块部署到开发环境当中。参考博文:Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建_长沙红胖子-CSDN博客 下载 Qt官方在g…

HTML 块级元素与行内元素有哪些以及注意、总结

行内元素和块级元素是HTML中的两种元素类型,它们在页面中的显示方式和行为有所不同。 块级元素(Block-level Elements): 常见的块级元素有div、p、h1-h6、ul、ol、li、table、form等。 块级元素会独占一行,即使没有…

WPF仿网易云搭建笔记(4):信息流控制之消息订阅

文章目录 专栏和Gitee仓库前言消息订阅最简单的案例简单用例父组件订阅子组件回调 结果 消息订阅机制消息token是A还是B?传递消息的载体。双重token重复订阅问题 结论 专栏和Gitee仓库 WPF仿网易云 Gitee仓库 WPF仿网易云 CSDN博客专栏 前言 上一篇文章中,我们简单…

最大公因数,最小公倍数详解

前言 对于初学编程的小伙伴们肯定经常遇见此类问题,而且为之头疼,今天我来给大家分享一下,最大公因数和最小公倍数的求法。让我们开始吧! 文章目录 1,最大公因数法1法2法3 2,最小公倍数3,尾声 …

修改 vCenter Server 的 FQDN | hostname | PNID

目录 1 先决条件2. 修改 VC 7.0.3 hostname(1)备份 VCSA(2)为VCSA的新hostname创建DNS记录(3)修改 VCSA 的hostname① 进入vCenter Server VAMI② 查看当前 FQDN③ 编辑网络设置④ 选择网络适配器⑤ 修改 h…

【Linux】 线程池

线程池 什么是线程池? 一次预先申请一批线程,让这批线程有任务,就处理任务;没任务,就处于等待状态。 为什么要有线程池? 以空间换时间,预先申请一批线程,当有任务到来,可…

arkts编译报错-arkts-limited-stdlib错误【Bug已完美解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:适配指导案例此Bug解决方案总结项目场景: arkts编译报错-arkts-limited-stdlib错误。 我用Deveco studio4.0 beta2开发应用,报arkts-limited-stdlib错误 报错内容为: ERROR: ArKTS:ERROR File: D:/prRevivw/3792lapplica…

基于深度学习的yolov5入侵检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介IntroductionYOLOv5 Overview入侵检测系统架构1. 数据采集2. YOLOv5模型训练3. 实时监测4. 告警与反馈 性能评估与优化 二、功能三、系统四. 总结 一项目简…

渗透测试是什么

随着信息技术的飞速发展,网络安全问题日益凸显。其中,渗透测试作为一种重要的安全评估方法,已经被越来越多的企业和组织所采用。渗透测试通过模拟黑客攻击,发现并修复潜在的安全漏洞,从而提高系统的安全性。 直白的说…

【数据安全】金融行业数据安全保障措施汇总

数字化的今天,数据的价值不可估量,尤其是金融行业,数据不仅代表着企业的核心资产,还涉及到客户的隐私和信任。因此对于金融行业而言,保障数据安全至关重要。下面我们就来一起讨论为什么金融行业要保障数据安全&#xf…

功能介绍 | 红队企业版全新功能定时扫描与企业版报告强势来袭!

0x01 前言 面对大型企业复杂且庞大的网络环境,我们通常会遇到资产繁杂、边缘资产发现困难以及资产种类梳理不全等问题。Goby红队企业版的出现,旨在除了满足企业在漏洞扫描、威胁情报分析、安全评估等方面的基础需求之外,我们也在一直持续更新…

12.5单端口RAM,JS计数器,流水线乘法器,不重叠序列检测器(状态机+移位寄存器),信号发生器,交通灯

单端口RAM timescale 1ns/1nsmodule RAM_1port(input clk,input rst,input enb,input [6:0]addr,input [3:0]w_data,output wire [3:0]r_data );reg [6:0]mem[127:0];integer i;always (posedge clk or negedge rst) beginif(!rst) beginfor (i0; i<127 ; ii1) beginmem[i]…