Zum Beispiel habe ich einen Vektor x
und a
ist es am nächsten Nachbar. Dann ist b
es der nächste nächste Nachbar. Gibt es ein Paket in Pyton oder R, das etwas wie [a, b]
ausgibt, was bedeutet, dass a sein nächster Nachbar ist (vielleicht durch Mehrheitswahl), während b der zweitnächste Nachbar ist.KNN-Algorithmus, die 2 oder mehr nächste Nachbarn
0
A
Antwort
2
Das ist genau das, wofür diese Metric-Bäume gebaut werden.
Ihre Frage lautet, wie Sie für etwas so einfach wie das mit sklearn der KDTree (man denke BallTree je nach Metrik im Spiel) fragen:
import numpy as np
from sklearn.neighbors import KDTree
X = np.array([[1,1],[2,2], [3,3]]) # 3 points in 2 dimensions
tree = KDTree(X)
dist, ind = tree.query([[1.25, 1.35]], k=2)
print(ind) # indices of 2 closest neighbors
print(dist) # distances to 2 closest neighbors
Out:
[[0 1]]
[[ 0.43011626 0.99247166]]
Und nur um klar sein: KNN normalerweise bezieht sich auf einige Pre-Build-Algorithmus auf metrischen Bäumen (KDTree, BallTree) für die Aufgabe der Klassifizierung basiert. Oft sind die Datenstrukturen das einzige, was man interessiert ist.
bearbeiten
Wenn ich Ihren Kommentar richtig zu interpretieren, können Sie die manhattan/taxicab/l1 metric verwenden möchten.
Look here für die Kompatibilitätslisten dieser räumlichen Bäume.
Sie würden es einfach so verwenden:
X = np.array([[1,1],[2,2], [3,3]]) # 3 points in 2 dimensions
tree = KDTree(X, metric='l1') # !!!
dist, ind = tree.query([[1.25, 1.35]], k=2)
print(ind) # indices of 2 closest neighbors
print(dist) # distances to 2 closest neighbors
Out:
[[0 1]]
[[ 0.6 1.4]]
Verwandte Themen
- 1. PostGis nächste Nachbarn Abfrage
- 2. K-nächste Nachbarn finden
- 3. Nächste Nachbarn mit unsicheren Punkten
- 4. ungefähre nächste Nachbarn Zeit Komplexität
- 5. 5 Nächste Nachbarn mit KD-Baum
- 6. k-nächste Nachbarn Algorithmus Klassen zählen
- 7. Support Vector Machine vs K Nächste Nachbarn
- 8. Meißel k Nächste Nachbarn Verilog-Ausgabe
- 9. Nächste Nachbarn in Python gegeben die Distanz-Matrix
- 10. Effiziente Nächste-Nachbarn-Suche nach dünn besetzten Matrizen
- 11. Was bedeuten Einkommenswerte in benutzerdefinierten Metrik für K nächste Nachbarn?
- 12. Räumliche Abfragen für k-ten nächste Nachbarn eines Punktes
- 13. R, Create K-nächste Nachbarn Gewichte in einer Matrix
- 14. k-nächste Nachbarn, wo die Anzahl der Objekte in jeder Klasse sehr unterschiedlich ist
- 15. Match Drei oder mehr Nächste Zahlen von Arrays
- 16. Geohashing - rekursiv Nachbarn der Nachbarn finden
- 17. Zelluläre Automaten, die Nachbarn überprüfen
- 18. 2 (oder mehr), um Ansichten für die gleiche onClick Methode
- 19. MySQL Spiel gegen die mit 2 oder mehr Keywords
- 20. verwalten Navigation zwischen 2 oder mehr storyboards
- 21. Mapping Einheiten auf 2 (oder mehr) Datenbanken
- 22. 2 oder mehr Bilder hochladen PHP
- 23. 2 oder mehr Arrays aus einer Liste
- 24. Splitting String in 2 oder mehr Regex
- 25. Rubin mehr als 2 Alternative oder-Operator
- 26. Multiply 2 oder mehr Arrays in Golang
- 27. Wie funktioniert Floating 2 (oder mehr) divs?
- 28. Zufällige Auswahl zwischen 2 oder mehr Bereichen
- 29. 2 (oder mehr) Spalten Fotoraster beibehalten Seitenverhältnis
- 30. 2 oder mehr Objekte zu JFrame hinzufügen
Dank. Könnten Sie bitte mir helfen, meine eigene Distanzmetrik, die Distanzmatrix von Elementen von Vektoren, einzufügen? Zum Beispiel, wenn ich zwei Vektoren [x1, x2] und [y2, y2] habe, ist es möglich, Abstandsmetrik einzufügen, die Abstand zwischen Vektoren auf Element-für-Element-Basis von Abstandsmatrix erhält. Der Abstand zwischen x und y ist | x1-y1 | + | x2-y2 |. – spartan
Wenn ich versuche 'tree = KDTree (X, metric = dist)' 'mit distbeing Funktion dist (x, y), die float zurückgibt bekomme ich Fehler: ValueError: metrisch PyFuncDistance ist nicht gültig für KDTree – spartan
@spartan Siehe meine Bearbeitung. – sascha