生成KD树并用KD树求最近邻点

本文是对《KD-tree的原理以及构建与查询操作的python实现》的解读。


KD树是一种特殊的数据结构,Python中常见的数据结构无法表示该数据结构。作者将KD树拆分成基本组成部分 —“节点树”,该“节点树”具有“根节点”,“切割维度”,“左子树”,“右子树”这四个属性。作者自己创建了一个表示该“树节点”的类,并用该类的对象去表示“树节点”。类的定义代码如下:

class KD_node:
    def __init__(self, point = None, split = None, LL = None, RR = None):
        """
        point: 数据点
        split: 划分域
        LL,RR: 节点的左右子树
        """
        self.point = point
        self.split = split
        self.left  = LL
        self.right = RR

作者选择维度的标准是:样本在某一维度上的分量的方差最大,方差越大,说明这个维度上的数据波动越大,也就说明样本越不可能属于同一个空间,需要在这个维度上对点进行划分。具体生成KD树的过程代码如下:

这里写代码片

猜你喜欢

转载自blog.csdn.net/sunjianqiang12345/article/details/71241150