Finden Sie K nächste Nachbarn, ausgehend von einer Entfernungsmatrix
Ich bin auf der Suche nach einer gut optimierten Funktion, die eine akzeptiertn X n
Entfernungsmatrix und gibt ein zurückn X k
Matrix mit den Indizes derk
nächste Nachbarn des i-ten Datenpunkts in der i-ten Reihe.
Ich finde eine Gazillion andersR
Pakete, mit denen Sie KNN ausführen können, die jedoch alle die Entfernungsberechnungen zusammen mit dem Sortieralgorithmus in derselben Funktion enthalten. Insbesondere ist für die meisten Routinen das Hauptargument die ursprüngliche Datenmatrix, keine Distanzmatrix. In meinem Fall verwende ich für gemischte Variablentypen einen nicht standardmäßigen Abstand, sodass ich das Sortierproblem von den Abstandsberechnungen trennen muss.
Dies ist nicht gerade ein entmutigendes Problem - ich könnte natürlich nur das verwendenorder
Funktioniere innerhalb einer Schleife, um zu bekommen, was ich will (siehe meine Lösung unten), aber das ist alles andere als optimal. Zum Beispiel diesort
funktionieren mitpartial = 1:k
wannk
ist klein (weniger als 11) geht viel schneller, liefert aber leider nur sortierte Werte anstatt der gewünschten Indizes.