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 的資料集。 - 高效能:支援多執行緒樹建構,並提供最佳化的樹遍歷器用於除錯和視覺化。
相關
- 專案
- 專案
- 專案
- 專案