KristofferC/NearestNeighbors.jl

High performance nearest neighbor data structures (KDTree and BallTree) and algorithms for Julia.

解决的问题

NearestNeighbors.jl 提供了在数据集中高效查找最近点的方法,这是许多科学模拟和机器学习任务的基本操作。它解决了搜索数百万个点时无需将每个点与其他所有点进行比较(暴力搜索)的挑战,因为暴力搜索对于大型数据集来说太慢了。

工作原理

该包实现了多种称为“树”的空间划分结构,将数据点组织成区域的层次结构:

  • KDTree:使用轴对齐平面分割数据,适用于低维数据。
  • BallTree:使用超球体对点进行分组,更适合高维数据和自定义距离度量。
  • BruteTree:用作基线的简单线性搜索。
  • PeriodicTree:允许搜索“环绕”定义边界边缘的包装器,这对物理模拟至关重要。

它支持并行构建树以加快设置时间,并提供可变构造函数(如 KDTree!)以便在数据频繁更新时重用内存。

适用人群

该工具专为使用 Julia 的研究人员和开发人员设计,他们需要在多维空间中进行快速的 k 最近邻(kNN)或范围搜索。

亮点

  • 多种树类型:根据数据维度和度量选择 KD 树或球树。
  • 周期边界:通过 PeriodicTree 内置支持周期域。
  • 内存效率:包含 DataFreeTree,通过磁盘内存映射处理大于可用 RAM 的数据集。
  • 高性能:支持多线程树构建,并提供优化的树遍历器用于调试和可视化。

相关

  • 项目
  • 项目
  • 项目
  • 项目