在 sklearn.neighbors.KDTree 的documentation中,有一个内存消耗说明:
存储树所需的内存量大约为n_samples / leaf_size。
这是否意味着当 leaf_size 变大时,存储树所需的内存会减少?
我认为 leaf_size 指定树中有多少个叶子节点,所以如果有很多节点,则内存会增长。我在想错吗?
答案 0 :(得分:0)
leaf_size
参数指定在树的“分支”底部的终端“叶子”中存储的条目数。另一种说法是,将您的查询与穷举相比较的“邻居”数量......
如果您的leaf_size
较小。树需要更大,因此它增加了存储树的内存需求。
实际上,leaf_size
可以极大地影响计算时间,并且是每次查询访问较大树的成本(小leaf_size
)与更多对象的详尽比较成本之间的平衡对于每个查询(较大的leaf_size
)
有关详细信息,请参阅此处的leaf_size优化: https://jakevdp.github.io/blog/2013/04/29/benchmarking-nearest-neighbor-searches-in-python/