Derzeit mache ich ein Projekt, das möglicherweise einen kNN-Algorithmus benötigen, um die Top k nächsten Nachbarn für einen bestimmten Punkt zu finden, sagen P. im Python, sklearn-Paket, um die Arbeit zu tun , aber unsere vordefinierte Metrik gehört nicht zu diesen Standardmetriken. also muss ich die benutzerdefinierte Metrik verwenden, aus den Dokumenten von sklearn, die here und here finden können.Sklearn kNN Verwendung mit einer benutzerdefinierten Metrik
Es scheint, dass die neueste Version von sklearn kNN den Benutzer unterstützen Metrik definiert, aber ich kann nicht finden, wie man es benutzt:
import sklearn
from sklearn.neighbors import NearestNeighbors
import numpy as np
from sklearn.neighbors import DistanceMetric
from sklearn.neighbors.ball_tree import BallTree
BallTree.valid_metrics
sagen, dass ich eine Metrik genannt MYDIST = max (xy) definiert haben, dann verwenden DistanceMetric.get_metric es ein DistanceMetric Objekt zu machen:
dt=DistanceMetric.get_metric('pyfunc',func=mydist)
aus dem Dokument sieht die Zeile sollte wie folgt
nbrs = NearestNeighbors(n_neighbors=4, algorithm='auto',metric='pyfunc').fit(A)
distances, indices = nbrs.kneighbors(A)
aber wo kann ich die dt
in? Dank
der Grund 'NBRs = NearestNeighbors (n_neighbors = 4, algorithm = 'auto', metric = 'pyfunc'). Passen (A) Entfernungen, Indizes = nbrs.kneighbors (A)' nicht funktioniert auch i put 'func = mydist' ist da, weil der Parameter' algorithm = auto' keine benutzerdefinierten Metriken akzeptiert, weder 'algorithm = kd_tree' oder' algorithm = brute'. Nur der 'algorithm = ball_tree' akzeptiert – user2926523