我正在看SciPy的KD树实现。我对leafsize
参数感到困惑,据说它是
算法切换到蛮力的点数。违约: 16。
这是BST的叶子数吗?如果是这样的话,这意味着默认情况下,KD树将包含不超过32分。这似乎是不合理的小,特别是对于我的用例k=2。我是否不正确地解释参数?
发布于 2020-08-31 13:56:55
参数leafsize
并不控制树中的最大叶数(这是无界的),而是与树中的单个叶相关联的输入点数。考虑将64点添加到树中。如果每个点与一片叶子相关联,您将得到一棵七层深的完整树,任何需要点的处理都会下降到这七个层次来找到它。或者,如果叶子的大小是16,你会得到一棵树只有3层深,树中的每一片叶子都与16分相关联。处理一个点需要降低树的三个层次,然后测试叶子上的16个点(因为它们是无序的)。可以根据性能对此值进行调优,并且在经验上,最佳值取决于树的确切使用方式。
从概念上讲,这里是为不同leafsize
值构建的树的一个示例。
您可以看到leafsize
参数是如何在枕木源代码中短路树构建过程的.这将在树的叶子中的leafsize/2
和leafsize
点之间留下无序。
https://stackoverflow.com/questions/63655219
复制相似问题