李航老师书上的的算法说明没怎么看懂,看了网上的博客,悟出一套循环(建立好KD树以后的最近邻搜索),我想应该是这样的(例子是李航《统计学习算法》第三章56页;例3.3):

  步骤 结点查询标记 栈内元素(本次循环结束后) 最近点 最近距离 说明
A B C D E F G
初始化 ABD M=空 Mdis = ∞ 初始化:先将S所在的区域找到,将经过的各个结点依次加入栈中,将查询标记初始化为0
循环 AB M=D Mdis = dis(S,D) 取出栈顶元素D,D被查询,更新D的标记为1,计算S与D的距离,比当前最小值小,更新M=D,Mdis = dis(S,D),计算S到D的超平面的距离是否小于Mdis(这里二维就是以S为圆心,Mdis为半径的圆是否与D那维的直线相交,在这里是相交的),小于,将D两侧的子结点加入栈,但是D两侧没有子结点,不加
A M=D Mdis = dis(S,D) 取出栈顶元素B,B被查询,更新B的标记为1,计算S与B的距离,不比当前最小值小,不更新,计算S到B的超平面的距离是否小于Mdis,大于,那就只加入B的S那一侧的子结点D,子结点D已经被标记为1,已被查询,不加入
C M=D Mdis = dis(S,D) 取出栈顶元素A,A被查询,更新A的标记为1,计算S与A的距离,不比当前最小值小,不更新,计算S到A的超平面的距离是否小于Mdis,小于,将A两侧的子结点加入,子结点B已经被标记为1,被查询,不加入,子结点C标记为0,加入栈
E M=D Mdis = dis(S,D) 取出栈顶元素C,C被查询,更新C的标记为1,计算S与C的距离,不比当前最小值小,不更新,计算S到C的超平面的距离是否小于Mdis,大于,只加入C的S那侧的子结点E,子结点E标记为0,没被查询,加入栈
  M=E Mdis = dis(S,E) 取出栈顶元素E,E被查询,更新E的标记为1,计算S与E的距离,比当前最小值小,更新M=E,Mdis = dis(S,D),计算S到E的超平面的距离是否小于Mdis,小于,将E两侧的子结点加入栈,但是E两侧没有子结点,不加
  M=E Mdis = dis(S,E) 栈空,循环结束

如果有错,还望大佬们能够指正

统计学习方法——KD树最近邻搜索的更多相关文章

  1. KNN算法与Kd树

    最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类.由此,我们引出最近邻算法的定义:为了判定未知 ...

  2. 从K近邻算法谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/v_july_v/article/details/8203674 ,感谢july的辛勤劳动 前言 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章 ...

  3. <转>从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/likika2012/article/details/39619687 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经 ...

  4. 统计学习方法笔记 -- KNN

    K近邻法(K-nearest neighbor,k-NN),这里只讨论基于knn的分类问题,1968年由Cover和Hart提出,属于判别模型 K近邻法不具有显式的学习过程,算法比较简单,每次分类都是 ...

  5. 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转载自:http://blog.csdn.net/v_july_v/article/details/8203674/ 从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 前言 前两日,在微博上说: ...

  6. 统计学习方法与Python实现(二)——k近邻法

    统计学习方法与Python实现(二)——k近邻法 iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.定义 k近邻法假设给定一个训练数据集,其中的实例类别已定 ...

  7. 李航统计学习方法——算法2k近邻法

    2.4.1 构造kd树 给定一个二维空间数据集,T={(2,3),(5,4),(9,6)(4,7),(8,1),(7,2)} ,构造的kd树见下图 2.4.2 kd树最近邻搜索算法 三.实现算法 下面 ...

  8. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  9. 统计学习方法 | 第3章 k邻近法

    第3章 k近邻法   1.近邻法是基本且简单的分类与回归方法.近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的个最近邻训练实例点,然后利用这个训练实例点的类的多数来预测输入实例 ...

随机推荐

  1. GO Range

    Go 语言中 range 关键字用于 for 循环中迭代数组(array).切片(slice).通道(channel)或集合(map)的元素.在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 ...

  2. 进程的用户ID

    进程创建时,系统会在进程上设置几个用户相关的ID 实际用户ID,实际用户组ID,系统根据当前会话登陆的用户信息设置 有效用户ID,有效用户组ID,系统根据所打开的执行文件的模式位,进行设置.set_u ...

  3. 什么是Rogue Histogram?

    Rogue Histogram可以理解为AP的“流氓直方图”,这里大概记录了该AP附近的其他AP的信道和频宽. 例如如下图:可以通过show ap auto-rf 802.11a AP-name / ...

  4. CRS-1硬件维护

    一.CRS-1硬件介绍CRS-1 路由器是Cisco 推出的新的大容量骨干路由器,是一个支持多机箱扩展的路由系统.其设计容量可以扩展至72 个线卡机箱.8 个矩阵机箱,总交换容量达到92Tbps,具有 ...

  5. 自定义 Laravel 5.7 - 6.X 中验证邮箱的标题文本

    原理解析: 验证邮箱在Laravel默认实现中是一个Notification,不是Mailable,而为了自定义验证邮箱的默认配置,我们先来查看一下 /vendor/laravel/framework ...

  6. 启动named服务报错!

    安装及配置bind服务程序: yum -y install bind 三个关键文件: 主配置文件(/etc/named.conf) 区域配置文件(/etc/named.rfc1912.zones) 数 ...

  7. RAID0---RAID10(重点)

    二.基本原理 RAID ( Redundant Array of Independent Disks )又叫独立磁盘冗余阵列,通常简称为磁盘阵列. RAID是一种把多块独立的硬盘(物理硬盘)按不同方式 ...

  8. SqlCacheDependency 缓存数据库依赖

    启用SQL SERVER 通知 aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d N ...

  9. 学习 Python,怎能不懂点PEP 呢?

    或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大 ...

  10. 质因数分解(0)<P2012_1>

    质因数分解 (prime.cpp/c/pas) [问题描述] 已知正整数n是两个不同的质数的乘积,试求出较大的那个质数. [输入] 输入文件名为prime.in. 输入只有一行,包含一个正整数n. [ ...