2016-02-20 7 views
1

Я использую scikit-learn 0.18.dev0. Я точно знаю, что тот же вопрос задавался до here. Я попробовал ответ представил там, я получаю следующую ошибкуКак использовать определенную пользователем метрику для ближайших соседей в scikit-learn?

>>> def mydist(x, y): 
...  return np.sum((x-y)**2) 
... 
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) 

>>> nbrs = NearestNeighbors(n_neighbors=4, algorithm='ball_tree', 
...   metric='pyfunc', func=mydist) 

Сообщение об ошибке _init_params() got an unexpected keyword argument 'func'

Похоже, этот вариант был удален. Как я могу использовать определяемую пользователем матрицу в sklearn.neighbors?

ответ

1

Правильное ключевое слово metric:

import numpy as np 
from sklearn.neighbors import NearestNeighbors 

def mydist(x, y): 
    return np.sum((x-y)**2) 

nn = NearestNeighbors(n_neighbors=4, algorithm='ball_tree', metric=myfunc) 

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) 
nn.fit(X) 

Это также упоминается в строку документации в разрабатываемой версии: https://github.com/scikit-learn/scikit-learn/blob/86b1ba72771718acbd1e07fbdc5caaf65ae65440/sklearn/neighbors/unsupervised.py#L48