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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage