Когда я использую алгоритм knn
в sklearn
, я могу получить ближайших соседей в пределах радиуса, который я укажу, т.е. возвращает форму круга ближайших соседей в этом радиусе. Есть ли реализация, в которой вы можете указать два значения радиуса, чтобы вернуть форму эллипса ближайших соседей?K ближайший сосед в радиусе sklearn - эллипс
2
A
ответ
2
Вы можете указать пользовательское расстояние метрики в NearestNeighbors
:
# aspect of the axis a, b of the ellipse
aspect = b/a
dist = lambda p0, p1: math.sqrt((p1[0] - p0[0]) * (p1[0] - p0[0]) + (p1[1] - p0[1]) * (p1[1] - p0[1]) * aspect)
nn = NearestNeighbors(radius=1.0, metric=dist)
или непосредственно use the KDTree
с custom metric:
from sklearn.neighbors import KDTree
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
# aspect of the axis a, b of the ellipse
aspect = b/a
dist = DistanceMetric.get_metric('pyfunc', lambda p0, p1: math.sqrt((p1[0] - p0[0]) * (p1[0] - p0[0]) + (p1[1] - p0[1]) * (p1[1] - p0[1]) * aspect))
kdt = KDTree(X, leaf_size=30, metric=dist)
# now kdt allows queries with ellipses with aspect := b/a
kdt.query([0.1337, -0.42], k=6)
Конечно, вы можете применить любое аффинное преобразование в вашем расстоянии метрики получить поворот и масштабирование для ориентированных эллипсов.
Смежные вопросы
- 1. K-ближайший сосед в python
- 2. K Ближайший сосед
- 3. K ближайший сосед расстояние
- 4. Data Mining - K ближайший сосед
- 5. ближайший сосед - k-d tree - доказательство википедии
- 6. источник оценки плотности knn (k ближайший сосед) в matlab
- 7. K-ближайший сосед с размерами в замкнутом контуре
- 8. Как найти k-й ближайший сосед точки в наборе точек
- 9. Ближайший сосед Поиск в Python без дерева k-d
- 10. Условный ближайший сосед в Python
- 11. Ближайший сосед с KDtree
- 12. C++ Armadillo: ближайший сосед
- 13. 'Ближайший сосед' зум
- 14. Excel Macro Ближайший сосед
- 15. ближайший сосед 2 измерения
- 16. java OpenCV найти k ближайший сосед C++ к преобразованию Java
- 17. Самый быстрый k ближайший сосед с произвольной метрикой?
- 18. Параллельный ближайший сосед K с использованием ошибки openmp и сегментации
- 19. Postgresql k-ближайший сосед (KNN) на многомерном кубе
- 20. SQL эффективного ближайший сосед запрос
- 21. Ближайший сосед - код ошибки iterable в Python
- 22. SQL Server 2012 ближайший сосед
- 23. Интерполяция изображений - ближайший сосед (Обработка)
- 24. Как решить ближайший сосед эвристический
- 25. Ближайший сосед поиск производительность запроса
- 26. Python optomise ближайший сосед для больших массивов
- 27. Matching интересов (ближайший сосед) в SQL
- 28. Проблема с sklearn k ближайших соседей
- 29. Ближайший сосед, без выбросов в облаке 2d точек
- 30. Эффективный ближайший сосед ищет конкретную задачу?
Быстрый вопрос: в 'kdt.query', где я могу указать' b' и 'a'? –
@ Javiar вы не можете, вам нужно создать новый 'NearestNeighbors' /' KDTree', если вы измените соотношение сторон 'a' и' b'/при изменении метрики расстояния. – BeyelerStudios
Хм .. Мне нужно посмотреть, как я могу изменить ваше решение, чтобы соответствовать моей проблеме. Но спасибо за полезный указатель - я отвечу на ваш ответ. –