Ich habe eine benutzerdefinierte Abstandsmetrik, die ich für KNN
, K Nearest Neighbors
verwenden muss.Wie erlaubt man sklearn K Nearest Neighbors benutzerdefinierte Distanz Metrik zu nehmen?
Ich versuchte folgende this, aber ich kann es aus irgendeinem Grund nicht funktionieren.
Ich würde davon ausgehen, dass die Distanzmetrik zwei Vektoren/Arrays die gleiche Länge nehmen soll, wie ich weiter unten geschrieben haben:
import sklearn
from sklearn.neighbors import NearestNeighbors
import numpy as np
import pandas as pd
def d(a,b,L):
# Inputs: a and b are rows from a data matrix
return a+b+2+L
knn=NearestNeighbors(n_neighbors=1,
algorithm='auto',
metric='pyfunc',
func=lambda a,b: d(a,b,L)
)
X=pd.DataFrame({'b':[0,3,2],'c':[1.0,4.3,2.2]})
knn.fit(X)
jedoch, wenn ich rufe: knn.kneighbors()
, scheint es nicht, die benutzerdefinierte Funktion zu mögen. Hier ist die Unterseite des Fehler-Stack:
Allerdings sehe ich genau das gleiche in der Frage, die ich zitiert habe. Irgendwelche Ideen, wie man diese Arbeit an sklearn version 0.14
machen kann? Mir sind keine Unterschiede in den Versionen bekannt.
Danke.
auch Ihre Distanzfunktion nicht gut ist, wird es einen Vektor zurückgeben, wheras es einen einzigen Wert zurückgeben muss – maxymoo