У меня есть следующие точки в трехмерном пространстве:
![enter image description here](https://i.stack.imgur.com/TcOm8.png)
Мне нужно группировать точек, согласно D_max
и d_max
:
D_max = max dimension of each group
d_max = max distance of points inside each group
Примерно так:
![enter image description here](https://i.stack.imgur.com/S1Wno.png)
Форма группы на изображении выше выглядит следующим образомполе, но форма может быть любой, что будет выводом алгоритма группировки .
Я использую Python и визуализирую результаты с помощью Blender.Я рассматриваю возможность использования scipy.spatial.KDTree и вызова его query API, однако я не уверен, что это правильный инструмент для работы под рукой.Я беспокоюсь, что может быть лучший инструмент, о котором я не знаю.Мне любопытно узнать, есть ли какой-нибудь другой инструмент / библиотека / алгоритм, который может мне помочь.
Как указывал @CoMartel, существует DBSCAN , а также Модули кластеризации HDBSCAN , которые хорошо подходят для такого рода задач.Однако, как отмечает @Paul, у них нет опции для максимального размера кластера, который соответствует моему параметру D_max
.Я не уверен, как добавить функцию максимального размера кластера к кластеризации DBSCAN и HDBSCAN.
Благодаря @ Anony-Mousse я наблюдал Агломерационная кластеризация: как она работает и Иерархическая кластеризация 3: одиночная ссылка против полной ссылки и я изучаю Сравнение алгоритмов кластеризации Python , я чувствую, что становится все яснее, как работают эти алгоритмы.