Я использую алгоритм DBSCAN в Python для набора данных (смоделирован очень похоже на http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html и загружается как кадр данных pandas), который содержит в общей сложности около 3 миллионов точек данных за 31 день. Кроме того, я выполняю кластеризацию плотности, чтобы находить выбросы на ежедневной основе, поэтому db = DBSCAN(eps=0.3, min_samples=10).fit(data)
будет иметь только дневные точки данных для обработки при каждом проходе. Минимальные/максимальные точки, которые у меня есть в любой день, - 15809 и 182416. Я пытался удалить переменные, но процесс останавливается на этапе кластеризации DBSCAN.
В
O(n log n)
это явно раздувается, независимо от того, где я его запускаю. Я понимаю, что нет возможности заранее указать количество «меток» или кластеров — что еще здесь лучше?Кроме того, с точки зрения оптимизации, некоторые значения этих точек данных будут точными (представьте их как повторяющиеся точки кластера) — могу ли я использовать эту информацию для обработки данных перед их подачей в DBSCAN?
Я прочитал эту тему об использовании "предварительной кластеризации навеса" для сжатия ваших данных. как при векторном квантовании перед DBSCAN (обратите внимание, что этот метод одинаково затратен в вычислительном отношении) - могу ли я использовать что-то подобное для предварительной обработки моих данных? Или как насчет "параллельного DBSCAN"?