Machine learning 对于大k(k=n),如何在kd树中寻找k-最近邻?

Machine learning 对于大k(k=n),如何在kd树中寻找k-最近邻?,machine-learning,knn,nearest-neighbor,kdtree,Machine Learning,Knn,Nearest Neighbor,Kdtree,我目前正在用python从头开始实现kd树,并将knn算法应用于它。我已经构建了树,并且有了查找1-nn的算法,但是我不确定如何使用它来获取k-最近邻。通过将每个节点与正确的属性进行比较,然后向下移动节点的相应子节点/侧节点,我可以找到最近的邻居。完成该节点后,我会使用修剪技术,并找出是否值得查看节点的另一个子节点,以查看是否有更好的距离(更近的邻居)。我在网上读到,我可以将k个最佳距离保存到一个max堆中,然后得到k个最近邻。我已经实现了这个,但我发现它有缺陷,也许我做得不对。这就引出了我的问

我目前正在用python从头开始实现kd树,并将knn算法应用于它。我已经构建了树,并且有了查找1-nn的算法,但是我不确定如何使用它来获取k-最近邻。通过将每个节点与正确的属性进行比较,然后向下移动节点的相应子节点/侧节点,我可以找到最近的邻居。完成该节点后,我会使用修剪技术,并找出是否值得查看节点的另一个子节点,以查看是否有更好的距离(更近的邻居)。我在网上读到,我可以将k个最佳距离保存到一个max堆中,然后得到k个最近邻。我已经实现了这个,但我发现它有缺陷,也许我做得不对。这就引出了我的问题

假设我的k很大,k=n,其中n是树中项目或节点的数量。如果我遍历树到最近的邻居,并保存沿途的所有最佳距离,则我的算法不会遍历树中的所有节点。它将选择到达最近节点的最佳路径,通过修剪,它将忽略节点,因此如果k=n,它将无法访问k个节点。因此,我的最大堆将只具有我遍历的节点数的最佳距离,并且我将无法遍历k个节点,因此它将没有k个最近邻。我如何解决这个问题?还是有别的办法,我做错了什么

**我知道将大k与kd树结合使用不是最佳实践,但我的任务是提供从k=1到k=n的所有k的精度