Ich muss K nächsten Nachbarn mit benutzerdefinierten Metrik verwenden. Ich habe eine Formel, die für Eigenschaften meiner Objekte funktioniert. Es bedeutet, dass ich Matrix habe. Diese Matrix besteht aus Vektoren und jeder Vektor enthält 3 Skalarwerte, die in der Formel verwendet werden.Was bedeuten Einkommenswerte in benutzerdefinierten Metrik für K nächste Nachbarn?
Ich habe gefunden, wie benutzerdefinierte Metrik innerhalb der Klasse KNeighborsClassifier
von Bibliothek sklearn verwenden. Es braucht nur einen Parameter namens metric, der string oder callable sein kann. Also ... Ich habe eine Funktion erstellt, aber diese Funktion benötigt zwei gleiche Arrays, die zum ersten Mal 10 skalare Werte enthalten. Ich meine, jedes Array enthält stattdessen 10 Werte. Zu jedem folgenden Zeitpunkt nimmt die Funktion Werte aus meiner Matrix.
Ich habe Call-Stack angesehen und ich habe gesehen, dass die Funktion aus der Klasse BallTree
aufgerufen. Ich habe über diese Struktur gelesen, aber ich kann nicht verstehen, wie sie meine Daten oder was sie zum ersten Mal an meine Metrik übergibt.
Was bedeuten diese beiden ersten gleichen Arrays?
I instanziiert Klassifikator durch diesen Code
clf = KNeighborsClassifier(n_jobs=4, metric=custom_metric)
clf.fit(X, Y)
X-Werte wie folgt enthält.
array([[2.400154, 0.07744107744107744, 96.80566400000001],
[2.39325, 0.07744107744107744, 97.219544],
[2.395162, 0.07744107744107744, 97.10519599999999],
[3.101635, 0.009788768675940238, 65.88368],
[3.09882, 0.009788768675940238, 65.97364499999999],
[3.099576, 0.009788768675940238, 65.956018]], dtype=object)
custom_metric
ist meine Funktion. Es enthält gerade nichts.
def custom_metric(x: np.ndarray, y: np.ndarray) -> float:
pass
Beispiel x
und y
array([ 0.02274535, 0.21161613, 0.41314247, 0.39046054, 0.1670481 ,
0.15515555, 0.13329802, 0.59103014, 0.26246693, 0.7727967 ])
Wie schreibe ich über sie gleich sind.
Sorry, wenn mein Englisch nicht klar ist.
Hallo! Kannst du mir Versionen deines Sklearns erzählen, numpy, scipy? – ANtlord
Numpy spielt hier keine Rolle. Sklearn ist auf dem neuesten Stand (0.18) – lejlot
Oh! Hast du Python 2? Ich bin auf Python 3. Ich habe Ihren Code getestet und es wird ausgegeben, was Sie gezeigt haben, aber auf Python 3 habe ich einen Fehler über Rückgabewert der metrischen Funktion. Metrik muss den Float-Wert als Abstand zwischen Objekten angeben. – ANtlord