nächste Nachbar Suche kdTree
Einer Liste von N
Punkte [(x_1,y_1), (x_2,y_2), ... ]
ich bin auf der Suche nach den nächsten Nachbarn zu jedem Punkt auf der Grundlage der Entfernung. Meine Datenmenge ist zu groß, um zu verwenden, eine brute-force-Ansatz, so dass ein KDtree am besten scheint.
Eher als Umsetzung eines von Grund sehe ich, dass sklearn.neighbors.KDTree
finden der nächsten Nachbarn. Können diese verwendet werden, finden die nächsten Nachbarn der jeder Teilchen, ich.e Rückkehr eine dim(N)
Liste?
- Wollen Sie zu finden-nächsten Nachbarn eines jeden Partikels mit sklearn Methode nur, oder durch irgendeine Methode?
- Jede' kdtree' basierende Methode verwenden, aber dies scheint eine attraktive Bibliothek aufgrund der Vielzahl von Anpassungsmöglichkeiten!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage ist sehr breit und fehlende details. Es ist unklar, was Sie wollte versuchen, wie deine Daten Aussehen und was für eine nearest-neighbor ist (Identität?).
Vorausgesetzt, Sie sind nicht daran interessiert, die Identität (mit Distanz 0), können Sie die Abfrage der beiden nächsten-Nachbarn-and-drop die erste Spalte. Dies ist wahrscheinlich der einfachste Ansatz hier.
Code:
- Ausgang
Können Sie
sklearn.neighbors.KDTree
'squery_radius()
Methode gibt eine Liste von der Indizes von den nächsten Nachbarn innerhalb eines radius (im Gegensatz zu der Rückkehr k nächsten Nachbarn).Ausgänge:
Beachten Sie, dass jeder Punkt sich selbst enthält, in die Liste der nächsten Nachbarn innerhalb des angegebenen radius. Wenn Sie möchten, um diese zu entfernen identity Punkte, das line-computing
all_nns
können geändert werden:Ergibt:
Den sklearn sollten die besten sein. Ich schrieb das hier einige die Zeit zurück ,wo ich brauchte, Brauch Abstand. (Ich denke, sklearn unterstützt keine benutzerdefinierten Abstand fn 'KD-tree' mit benutzerdefinierten Distanz-Metrik . Hinzufügen zur Referenz
Angepasst, aus meinem Kern für 2D - https://gist.github.com/alexcpn/1f187f2114976e748f4d3ad38dea17e8