Я использую оценку KD с пользовательской метрикой. Метрика явно медленнее, чем встроенное евклидово расстояние, но работает нормально. При выполнении
kde=KernelDensity(...)
kde.fit(X)
Я получаю результат в разумные сроки.
Когда я вычисляю
surface=np.exp(kde.score_samples(meshgrid))
где mehsgrid — это массив размером (около) 64000x2, kde вычисляет расстояние в каждой точке сетки. Кажется, я в корне неправильно понимаю, зачем это нужно... Плотность уже рассчитана с помощью метода .fit(), и score_samples "должен" просто оценивать плотность в каждой точке сетки - верно? Я что-то упускаю из виду?
Когда я делаю все расчеты со встроенной евклидовой метрикой, вычисления выполняются довольно быстро, нет намека на то, что .score_samples будет перебирать миллионы точек...
Любая подсказка приветствуется.