Я новичок в использовании алгоритма DBSCAN.
Краткое резюме; имеет два параметра:
epsilon
- указать допустимое расстояние между двумя точками, при котором их можно считать достаточно близкими для кластера.minPoints
— указать минимальное количество точек, которые должны попасть на расстояниеepsilon
, чтобы составить кластер. Если точек недостаточно, это просто помечается как шум.
Я использую чужой алгоритм DBSCAN, и у меня есть исходный код, который я отчасти понимаю. Я надеялся, что смогу использовать его как есть, но потом обнаружил поведение, которого не ожидал.
Я указал значение 6 для minPoints
, и все же в моих результатах я получил кластер только с 2 точками.
Из отладки, думаю, я вижу, что происходит. Похоже, что когда точка исследуется, у нее есть 16 соседей на расстоянии меньше epsilon
, поэтому ее следует квалифицировать как кластер. Позже алгоритм видит, что 14 из этих соседей уже были отнесены к другому кластеру, поэтому в этом кластере остается только 2 точки.
Должен ли minPoints
строго соблюдаться?
Так должен работать исправный алгоритм DBSCAN или это ошибка, которую мне нужно исправить, прежде чем продолжить?