2012-04-12 2 views
3

Ich muss K nächsten Nachbarn für eine Menge von Vektoren verwenden, die die Cosinus-Ähnlichkeitsmetrik und einige andere benutzerdefinierte Metriken verwenden. Wie kann ich erreichen, dass Scikits lernen? Ich habe sklearn.neighbors.KNeighborsClassifier gefunden, aber ich konnte keine Option für benutzerdefinierte Metriken ermitteln. Ich benutze derzeit die neueste Version Scikits lernen 0,11.Gibt es eine Möglichkeit, die k nächsten Nachbarn in Scikits mit einer benutzerdefinierten Distanzmetrik zu lernen?

Antwort

3

Es ist (noch?) Nicht möglich, vorberechnete oder faul berechnete benutzerdefinierte Abstandsfunktionen an die kNN-Modelle zu übergeben.

jedoch in dem Master-Zweig, jetzt haben Sie die Möglichkeit, beliebige p für p-Minkowsky Entfernungen zu verwenden:

https://github.com/scikit-learn/scikit-learn/pull/742

Es wäre ganz einfach, es zu ermöglichen, beliebige Benutzer definierten Abstand Funktion zu übergeben Für die Brute-Force-Methode kann die Ballbaumimplementierung (für niederdimensionale Daten) jedoch nicht so einfach an den allgemeinen Fall angepasst werden.

Auch für spärliche positive Daten und der Kosinusähnlichkeit würde ein invertierter Index eine bessere Datenstruktur sein, siehe: http://metaoptimize.com/qa/questions/9691/efficient-nearest-neighbors-in-a-very-sparse-settings

Verwandte Themen