李航老师书上的的算法说明没怎么看懂,看了网上的博客,悟出一套循环(建立好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. Spring Boot 缓存应用 Memcached 入门教程

    本章学习 Mmecached 在 Spring Boot 中的使用教程.Memcached 与 Redis 各有好处.本文主要学习 Spring Boot 中如何应用集成 Mmecached spri ...

  2. java中关于类和对象的一些思考

    就这个问题而言 第一种和第二种定义的变量并不是一种形式 前者我们称为原始数据变量 后者我们称为对象变量 这两种变量的创建方式,定义方式,使用方式都有着很多不同 需要引起注意. 在java中,有着基本的 ...

  3. 卷积神经网络(CNN)_相关知识

    斯坦福公开课 CS231n Convolutional Neural Networks for Visual Recognition : http://cs231n.stanford.edu/syll ...

  4. kafka中常用API的简单JAVA代码

    通过之前<kafka分布式消息队列介绍以及集群安装>的介绍,对kafka有了初步的了解.本文主要讲述java代码中常用的操作. 准备:增加kafka依赖 <dependency> ...

  5. springBoot+MybatisPlus数据库字段使用驼峰命名法时报错

    假如有个实体类: package com.jeff.entity; public class User { /** * 主键id */ private Integer id; /** * 登陆名 */ ...

  6. PHP的isset()、is_null、empty()使用总结

    这几个变量判断函数在PHP开发中用的其实挺多的,而且粗看上去都差不多,但其实还是有不少的区别的,如果搞不清楚,也许就会遗留一些潜在的bug, 包括我自已也遇到过这样的坑,比如有一次我就遇到过用empt ...

  7. oracle 高级函数2

    原 oracle 高级函数 2017年08月17日 16:44:19 阅读数:1731 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013278 ...

  8. JavaScript 引擎「V8」发布 8.0 版本,内存占用量大幅下降

    上周,JavaScript 引擎「V8」的开发团队在该项目官方网站上正式宣布推出最新的 8.0 版本.这次更新的重点主要集中在错误修复及性能改善上,正式的版本将在数周后随着谷歌 Chrome 80 稳 ...

  9. IDEA快捷键/本文仅供自己参考使用如有侵权立删

    好好来学习学习IDEA这款神器,让你的效率飞起!视频来自慕课网 本文转载 更多技巧 代码定位 跳转: 1.IDEA的左侧侧边栏有1:Project.7:Structure和2:Favorities a ...

  10. 实用类-<字符串与基本类型的转换>

    字符串与基本类型的转换 字符串->基本类型 int i5=Integer.parseInt("123"); System.out.println(i5); 基本类型-> ...