Я использую scikit-learn (0.14) и пытаюсь реализовать определенную пользователем метрику для оценки KernelDensity.Как использовать определяемую пользователем метрику в KernelDensity из scikit-learn (python)
Следующий код является примером того, как структурирована мой код:
def myDistance(x,y):
return np.sqrt(sum((x - y)**2))
dt=DistanceMetric.get_metric("pyfunc",func=myDistance)
kernelModel=KernelDensity(algorithm='ball_tree',metric='pyfunc')
kernelModel.fit(X)
Согласно документации, алгоритм BallTree должен принимать определенные пользователем метрики. Если я запускаю этот код так, как данное здесь, я получаю следующее сообщение об ошибке:
TypeError: __init__() takes exactly 1 positional argument (0 given)
ошибка, кажется, исходит из:
sklearn.neighbors.dist_metrics.PyFuncDistance.__init__
Я не понимаю этого. Если я проверю, что дает «dt» в приведенном выше коде, я получаю то, что ожидаю. dt.pairwise (X) возвращает правильные значения. Что я делаю неправильно?
Заранее спасибо.