【k近邻】Kd树构造与最近邻搜索示例

【k近邻】 K-Nearest Neighbors算法原理及流程

【k近邻】 K-Nearest Neighbors算法距离度量选择与数据维度归一化

【k近邻】 K-Nearest Neighbors算法k值的选择

【k近邻】 Kd树的构造与最近邻搜索算法

【k近邻】 Kd树构造与最近邻搜索示例

k近邻法的实现需要考虑如何快速搜索$k$个最近邻点,而$kd$树就是一种便于对 $k$维空间中的数据进行快速检索的数据结构。

$kd$树是二叉树,表示对$k$维空间的一个划分,其每个结点对应于$k$ 维空间划分中的一个超矩形区域,利用$kd$树可以省去对大部分数据点的搜索,从而减少搜索的计算量。

例: 给定一个二维空间的数据集,

T=\{(2,3)^{\mathrm{T}},(5,4)^{\mathrm{T}},(9,6)^{\mathrm{T}},(4,7)^{\mathrm{T}},(8,1)^{\mathrm{T}},(7,2)^{\mathrm{T}}\}

依据算法可以对特征空间进行划分

(1)根结点对应包含数据集$T$的矩形,选择$x^{(1)}$轴;

(2)6 个数据点的$x^{(1)}$坐标的中位数是 7 ,以平面 $x^{(1)}=7$ 将空间分为左、右两个子矩形(子结点);

(3)左矩形以$x^{(2)}=4$分为两个子矩形,右矩形以$x^{(2)}=6$ 分为两个子矩形;

(4)如此递归,最后得到如上图所示的特征空间划分和如下图所示的 $kd$树。

例:给定一个如图所示的kd

根结点为A,其子结点为B, C 等。树上共存储7个实例点,1个输入目标实例点 S,使用kd树的最近邻搜索算法可以求得S的最近邻点。

(1)首先在 $kd$ 树中找到包含点S的叶结点 $D$ (图中的右下区域), 以点$D$作为近似最近邻。真正最近邻一定在以点S为中心通过点$D$的圆的内部;

(2)返回结点$D$的父结点B, 在结点B的另一子结点F的区域内搜索最近邻;

(3)结点F的区域与圆不相交,不可能有最近邻点,故继续返回上一级父结点A;

(4)在结点A的另一子结点C的区域内搜索最近邻,结点C的区域与圆相交;该区域在圆内的实例点有点E,点E比点D更近,成为新的最近邻近似;

(5)得到点E是点S的最近邻。

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

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

相关文章

第5讲:数组

第5讲:数组 1. 数组的概念2. 一维数组的创建和初始化2.1 数组创建2.2 数组的初始化2.3 数组的类型 3. ⼀维数组的使用3.1 数组下标3.2 数组元素的打印3.3 数组的输入 4. ⼀维数组在内存中的存储5. sizeof计算数组元素个数6. 二维数组的创建6.1 二维数组的概念6.2 二维数组的创建…

npm i卡在 idealTree buildDeps没反应的解决方案

通过git clone拉下项目后,进行项目的初始化下包时,发现npm i 并没有反应(如图): 关键点:IdealTree 1.网络问题 确保你的网络连接正常,能够正常访问 npm 仓库。有时网络问题可能导致包无法正确…

游戏同步+游戏中的网络模块

原文链接:游戏开发入门(九)游戏同步技术_游戏数据同步机制流程怎么开发-CSDN博客 游戏开发入门(十)游戏中的网络模块_游戏开发组网-CSDN博客 3.同步技术的基本常识: a.同步给谁?某个用户&…

骨传导蓝牙耳机哪个好?六大精选购买技巧与规避常见陷阱指南

随着无线技术的飞速进步,蓝牙耳机已穿插在我们日常生活的每一处,成为常用的无线设备之一。而骨传导蓝牙耳机这一新科技产物近年来崭露头角。采用骨传导技术的耳机能通过头骨直接将声音传送至内耳,激活听觉神经,让声音直达听觉中枢…

http和https的区别(简述)

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)都是用于在客户端和服务器之间传输数据的协议,但它们在安全性方面有重要的区别。 1.HTTP: 概述: HTTP是一种用于传输超文本的协议(超文…

opencv从视频文件读取视频内容,从摄像头读取保存视频内容

文章目录 一、argparse模块1. 定义2. 讲解 二、读取、处理、保存图片1.读取图片2.灰度处理3.保存图片 三、读取摄像头、视频文件1.从摄像头读取2.从视频文件读取视频内容3.保存从摄像头读取的视频 一、argparse模块 1. 定义 (1)argparse模块使编写用户…

S-35390A计时芯片介绍及开发方案

计时芯片 S-35390A芯片是计时芯片,一般用来计算时间。低功耗,宽电压,受温度影响小,适用于很多电路。它有一个问题,不阻止用户设置不存在的时间,设置进去之后计时或者闹钟定时会出错。 规格书阅读 首先我…

【网站项目】560考试预约管理

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

利用gvim宏快速生成连续带数字下标的信号

工作中难免会遇到多次instance某个module,然后某个module的同时又含有多个端口的时候,如下dut,有4个input req_x(x0-3) ///rtl module dut();input req_0;input req_1;input req_2;input req_3; .... endmodule //tb top dut dut_0(.req_0(m…

2024.2.21 C++QT 作业

思维导图 练习题 1>使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数,将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"…

道本合规管理|| 欧盟对苹果公司的重罚与合规警示

近日,外媒广泛报道了欧盟委员会预计将对美国科技巨头苹果公司开出约5亿欧元的罚单。这一决定源于苹果公司在音乐流媒体服务领域的反竞争行为,违反了欧盟严格的反垄断法规。这一事件不仅揭示了企业在全球化经营中面临的合规挑战,也为我们提供了…

Validator工具验证类,区分添加,删除,修改

1&#xff1a;pom.xml添加必要依赖 <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId&g…

批量将Java项目GBK编码的文件转换为UTF8

场景 我们在新拿到一个项目的时候&#xff0c;尤其是老项目&#xff0c;很可能之前的项目编码是GBK&#xff0c;而我们的编译器默认编码为UTF-8&#xff0c;会出现乱码&#xff0c;如果我们一个一个文件的进行编码转换会非常麻烦&#xff0c;所以使用java实现了一个批量将GBK编…

自存 angular material design 表单输入框lable右对齐样式

单个输入框的文字lable放输入框左边实现 material design 的组件库示例没有文字描述放左边的样式 ,所以mat-lable并没有放在mat-form-field中 <div class"input-container col-6"><mat-label>商品售价<span class"text-error">*</spa…

ElasticSearch之零碎知识点

写在前面 本文记录es的零碎知识点&#xff0c;包括但不限于概念&#xff0c;集群方式&#xff0c;等。 1&#xff1a;词项查询 VS 全文查询 词项查询&#xff1a;查询的内容不做分词处理&#xff0c;输入的什么查询什么。 全文查询&#xff1a;查询的内容会做分词处理&…

Unity中,C#的事件与委托区别和经典实例

文章目录 实例1&#xff1a;委托&#xff08;Delegate&#xff09;的基本用法实例2&#xff1a;事件&#xff08;Event&#xff09;的声明与订阅实例3&#xff1a;Unity引擎中的委托实例 - UI Button.onClick实例4&#xff1a;事件&#xff08;Event&#xff09;的安全性实例5&…

Opencv3.2 ubuntu20.04安装过程

##1、更新源 sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt update##2、安装依赖库 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavfor…

AJAX.

概念:AJAX&#xff1a;异步的 JavaScript 和 XML AJAX作用: 1.与服务器进行数据交换: 通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的是数据 使用了AJAX和服务器进行通讯&#xff0c;就可以使用HTML和AJAX来替换JSP页面了 2.异步交互:可以在不重新加载整个页面的…

(C++) 详解内存地址空间

详解内存空间 0. 概述 一个C/C 程序&#xff0c;编译之后&#xff0c;形成的程序&#xff0c;在执行期间&#xff0c;内存中不仅存在一块区域用于存放代码&#xff0c;还有一些其他的区域用于使用&#xff0c;本节会详解C/C内部所使用的内存地址空间&#xff0c;关于各内存的…

Swift基础知识:29.Swift 泛型

在 Swift 中&#xff0c;泛型&#xff08;Generics&#xff09;是一种强大的特性&#xff0c;它允许你编写灵活、可复用的函数和类型&#xff0c;以便于处理各种不同类型的数据&#xff0c;而不需要重复编写相似的代码。泛型代码可以让你写出更加灵活、可维护和可复用的代码。 …