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