dbscan#

sklearn.cluster.dbscan(X, eps=0.5, *, min_samples=5, метрика='minkowski', metric_params=None, алгоритм='auto', leaf_size=30, p=2, sample_weight=None, n_jobs=None)[источник]#

Выполнить кластеризацию DBSCAN из массива векторов или матрицы расстояний.

Эта функция является обёрткой вокруг DBSCANRBM пытается максимизировать правдоподобие данных, используя определенную графическую модель. Используемый алгоритм обучения параметров ( DBSCAN.

DBSCAN (Density-Based Spatial Clustering of Applications with Noise) — это алгоритм кластеризации на основе плотности, который группирует точки, тесно расположенные вместе, помечая точки в областях с низкой плотностью как выбросы.

Подробнее в Руководство пользователя.

Параметры:
X{array-like, scipy sparse matrix} формы (n_samples, n_features) или (n_samples, n_samples)

Массив признаков или массив расстояний между образцами, если metric='precomputed'. При использовании предварительно вычисленных расстояний X должна быть квадратной симметричной матрицей.

epsfloat, по умолчанию=0.5

Максимальное расстояние между двумя образцами, чтобы один считался в окрестности другого. Это не максимальная граница расстояний точек внутри кластера. Это самый важный параметр DBSCAN для правильного выбора для вашего набора данных и функции расстояния. Меньшие значения приводят к большему количеству кластеров, в то время как большие значения приводят к меньшему количеству, но более крупным кластерам.

min_samplesint, по умолчанию=5

Количество образцов (или общий вес) в окрестности точки, чтобы она считалась ядром. Это включает саму точку. Более высокие значения дают меньше, но более плотные кластеры, а более низкие значения дают больше, но более разреженные кластеры.

метрикаstr или callable, по умолчанию='minkowski'

Метрика для использования при вычислении расстояния между экземплярами в массиве признаков. Если метрика является строкой или вызываемым объектом, она должна быть одной из допустимых опций, разрешенных sklearn.metrics.pairwise_distances для его параметра metric. Если metric равен "precomputed", X предполагается матрицей расстояний и должен быть квадратным во время fit. X может быть разреженный граф, в этом случае только «ненулевые» элементы могут считаться соседями.

metric_paramsdict, по умолчанию=None

Дополнительные именованные аргументы для метрической функции.

Добавлено в версии 0.19.

алгоритм{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, по умолчанию=’auto’

Алгоритм, используемый модулем NearestNeighbors для вычисления попарных расстояний и поиска ближайших соседей. 'auto' попытается определить наиболее подходящий алгоритм на основе значений, переданных в fit метод. См. NearestNeighbors документации для подробностей.

leaf_sizeint, по умолчанию=30

Размер листа, передаваемый в BallTree или cKDTree. Это может повлиять на скорость построения и запросов, а также на память, необходимую для хранения дерева. Оптимальное значение зависит от характера задачи. Обычно меньшие размеры листьев приводят к более быстрым запросам, но более медленному построению.

pfloat, по умолчанию=2

Параметр степени для метрики Минковского. При p = 1 это эквивалентно использованию manhattan_distance (l1), а при p = 2 - euclidean_distance (l2). Для произвольного p используется minkowski_distance (l_p). Ожидается, что этот параметр будет положительным.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Вес каждой выборки, такой что выборка с весом не менее min_samples сам по себе является ядром; выборка с отрицательным весом может препятствовать тому, чтобы ее eps-сосед был ядром. Обратите внимание, что веса абсолютны и по умолчанию равны 1.

n_jobsint, default=None

Количество параллельных задач для поиска соседей. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительных сведений. Если используются предварительно вычисленные расстояния, параллельное выполнение недоступно, поэтому n_jobs не окажет эффекта.

Возвращает:
core_samplesndarray формы (n_core_samples,)

Индексы основных выборок.

меткиndarray формы (n_samples,)

Метки кластеров для каждой точки. Зашумлённым образцам присваивается метка -1. Неотрицательные целые числа указывают на принадлежность к кластеру.

Смотрите также

DBSCAN

Интерфейс оценщика для этого алгоритма кластеризации.

OPTICS

Похожий интерфейс оценщика для кластеризации при нескольких значениях eps. Наша реализация оптимизирована по использованию памяти.

Примечания

Пример см. в Демонстрация алгоритма кластеризации DBSCAN.

Эта реализация массово вычисляет все запросы соседства, что увеличивает сложность по памяти до O(n.d), где d — среднее количество соседей, в то время как исходный DBSCAN имел сложность по памяти O(n). Это может привести к более высокой сложности по памяти при запросе этих ближайших окрестностей, в зависимости от algorithm.

Один из способов избежать сложности запросов — предварительно вычислять разреженные окрестности блоками с помощью NearestNeighbors.radius_neighbors_graph с mode='distance'затем используя metric='precomputed' здесь.

Другой способ уменьшить использование памяти и времени вычислений — удалить (почти)дублирующиеся точки и использовать sample_weight вместо этого.

OPTICS предоставляет аналогичную кластеризацию с меньшим использованием памяти.

Ссылки

Ester, M., H. P. Kriegel, J. Sander, and X. Xu, “A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise”для примера использования матрицы ошибок для классификации текстовых документов.

Schubert, E., Sander, J., Ester, M., Kriegel, H. P., & Xu, X. (2017). «DBSCAN пересмотрен, пересмотрен: почему и как вам (всё ещё) следует использовать DBSCAN.» ACM Transactions on Database Systems (TODS), 42(3), 19.

Примеры

>>> from sklearn.cluster import dbscan
>>> X = [[1, 2], [2, 2], [2, 3], [8, 7], [8, 8], [25, 80]]
>>> core_samples, labels = dbscan(X, eps=3, min_samples=2)
>>> core_samples
array([0, 1, 2, 3, 4])
>>> labels
array([ 0,  0,  0,  1,  1, -1])