DBSCAN должен занимать только O (n) памяти - так же, как k-означает.
Но, очевидно, реализация sklearn делает версию, которая сначала вычисляет всех соседейи, следовательно, использует O (n²) памяти, и, следовательно, менее масштабируемым.Я бы посчитал это ошибкой в sklearn, но, видимо, они хорошо знают об этом ограничении, которое, по-видимому, является проблемой, когда вы выбираете неверные параметры.Чтобы гарантировать O (n) памяти, может быть достаточно просто самостоятельно внедрить стандарт DBSCAN.
Объединение дубликатов, конечно, вариант, но A), что обычно означает, что вы используете неподходящие данные для этих алгоритмов, соответственно.для этого расстояния и B) вам также необходимо самостоятельно реализовать алгоритмы, чтобы добавить поддержку веса.Поскольку вам нужно использовать весовые суммы вместо подсчета результатов и т. Д. В DBSCAN.
И последнее, но не менее важное: если у вас есть метки и проблема классификации, то это, кажется, неправильный выбор.Они кластеризация, а не классификация.Их задача - , а не , чтобы воссоздать имеющиеся у вас метки, а найти новые метки из данных.