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.
Эта реализация массово вычисляет все запросы соседства, что увеличивает сложность по памяти до 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])