1

Ich möchte Top 20 ähnliche Artikel für jeden von N Elemente im Dataset berechnen. Jeder Artikel wird unter Verwendung der Funktionen von M Dimensionen dargestellt. Die Datengröße ist daher N_items X M_features.Warum dauert NearestNeighbors (SKlearn) länger, wenn n_neighbors weniger als die Gesamtzahl der Elemente hat?

Wenn ich n_neighbors nicht angeben (Standardwert ist 5), dauert kneighbors Funktion viel Zeit. Aber wenn ich n_neighbors = N_items angeben, gibt es Ergebnisse fast sofort.

d. H. NN_object = NearestNeighbors() braucht viel Zeit zu finden kneighbors aber NN_object = NearestNeighbors(n_neighbors=N_items) gibt Ergebnisse ziemlich schnell.

Kann jemand erklären, was genau hinter der Szene passiert?

PS: N_items in meinem Fall ist ~ 50K und M_features~ 10K ist.

+0

Warte was? 'len (features)' ist gleich was genau *? – gsamaras

+0

https://github.com/scikit-learn/scikit-learn/blob/14031f6/sklearn/neighbors/base.py#L269 Link für k-Nachbar-Funktion –

Antwort

-1

Vielleicht ist dies, weil, wenn Sie n_neigbors=n_samples im ersten Fall, die Gesamtzahl der metrischen Abstandsberechnungen für jeden Punkt ist KombinationC(n_samples, n_neigbors) liefern, die 1. ist aber, wenn Sie n_neigbors=21 tun dann die Anzahl der Berechnungen erhöhen viel Falten. Dies führt zu einer erhöhten Laufzeit. Sehen Sie sich den Algorithmus für die nächsten Neigbors an. Ich hoffe, Sie können Klarheit gewinnen, wenn Sie es durchgehen.

+0

Ich habe bereits die Dokumentation gesehen [NearestNeighbors] (http://scikit-learn.org/stable/modules/neighbors.html). Es gibt keine Informationen zur Matrizenberechnung. –

Verwandte Themen