В настоящее время я работаю над проектом, который может потребовать использования алгоритма kNN для поиска первых k ближайших соседей для заданной точки, скажем, P. Я использую пакет python, sklearn для выполнения этой работы, но наша предопределенная метрика не является одной из этих метрик по умолчанию. поэтому мне приходится использовать пользовательскую метрику из документов sklearn, которые можно найти здесь и здесь.
Кажется, что последняя версия sklearn kNN поддерживает пользовательскую метрику, но я не могу найти, как ее использовать:
Код: Выделить всё
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
скажем, я определил метрику с именем mydist=max(x-y), затем использую DistanceMetric.get_metric, чтобы сделать ее объектом DistanceMetric:
Код: Выделить всё
dt=DistanceMetric.get_metric('pyfunc',func=mydist)
из документа строка должна выглядеть так
Код: Выделить всё
nbrs = NearestNeighbors(n_neighbors=4, algorithm='auto',metric='pyfunc').fit(A)
distances, indices = nbrs.kneighbors(A)
но где я могу вставить dt? Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/210 ... ned-metric