DBSCAN
- classsklearn.cluster.DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean', metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)[source]
-
Выполните кластеризацию DBSCAN из массива векторов или матрицы расстояний.
DBSCAN (Density-Based Spatial Clustering of Applications with Noise) — алгоритм кластеризации, основанный на плотности. Он находит ядровые образцы высокой плотности и расширяет кластеры от них. Хорошо подходит для данных, содержащих кластеры с подобной плотностью.
Эта реализация имеет худший случай сложности памяти \(O({n}^2)\), что может произойти, когда параметр
epsбольшой, а параметрmin_samplesнизкий, в то время как оригинальный DBSCAN использует только линейную память. Дополнительные сведения см. в примечаниях ниже.Подробнее см. в Руководстве пользователя.
- Параметры:
-
- epsfloat, по умолчанию=0.5
-
Максимальное расстояние между двумя образцами, для того чтобы один из них считался соседом другого. Это не максимальная граница расстояний между точками внутри одного кластера. Это наиболее важный параметр DBSCAN, который следует правильно выбрать для вашего набора данных и функции расстояния.
- min_samplesint, по умолчанию=5
-
Количество образцов (или общий вес) в окрестности точки, чтобы точка считалась ядром. Это включает саму точку. Если
min_samplesустановлено в более высокое значение, DBSCAN будет находить более плотные кластеры, в то время как если его установить в более низкое значение, найденные кластеры будут более разреженными. - metricstr, или вызываемый объект, по умолчанию=’euclidean’
-
Метрика, используемая при вычислении расстояния между экземплярами в массиве признаков. Если метрика является строкой или вызываемым объектом, она должна быть одним из вариантов, разрешенных
sklearn.metrics.pairwise_distancesдля параметра метрики. Если метрика равна “precomputed”, X предполагается матрицей расстояний и должна быть квадратной. X может быть разреженной матрицей, в этом случае только «ненулевые» элементы могут рассматриваться как соседи для DBSCAN.Добавлена в версии 0.17: метрика precomputed для приема предварительно вычисленных разреженных матриц.
- metric_paramsdict, по умолчанию=None
-
Дополнительные ключевые аргументы для функции метрики.
Добавлена в версии 0.19.
- algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, по умолчанию=’auto’
-
Алгоритм, который должен быть использован модулем NearestNeighbors для вычисления расстояний между точками и поиска ближайших соседей. Подробнее см. документацию модуля NearestNeighbors.
- leaf_sizeint, по умолчанию=30
-
Размер листа, передаваемый в BallTree или cKDTree. Это может повлиять на скорость построения и запроса, а также на память, необходимую для хранения дерева. Оптимальное значение зависит от характера проблемы.
- pfloat, по умолчанию=None
-
Степень метрики Минковского, используемой для вычисления расстояния между точками. Если None, то используется
p=2(эквивалентное евклидову расстоянию). - n_jobsint, по умолчанию=None
-
Количество параллельных задач для выполнения.
Noneозначает 1, если не находится в контекстеjoblib.parallel_backend.-1означает использование всех процессоров. См. Словарь для получения более подробной информации.
- Атрибуты:
-
- core_sample_indices_массив формы (n_core_samples,)
-
Индексы ядровых образцов.
- components_массив формы (n_core_samples, n_features)
-
Копия каждого ядрового образца, найденного при обучении.
- labels_массив формы (n_samples)
-
Метки кластеров для каждой точки в наборе данных, переданного в fit(). Шумные образцы получают метку -1.
- n_features_in_int
-
Количество признаков, увиденных во время fit.
Добавлена в версии 0.24.
-
feature_names_in_массив формы (
n_features_in_,) -
Имена признаков, увиденные во время fit. Определены только тогда, когда
Xимеет имена признаков, которые все являются строками.Добавлена в версии 1.0.
См. также
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, “Алгоритм кластеризации на основе плотности для обнаружения кластеров в больших пространственных базах данных со шумом”. В: Труды 2-й Международной конференции по открытию знаний и обработки данных, Портленд, ОР, AAAI Press, стр. 226-231. 1996
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 >>> import numpy as np >>> X = np.array([[1, 2], [2, 2], [2, 3], ... [8, 7], [8, 8], [25, 80]]) >>> clustering = DBSCAN(eps=3, min_samples=2).fit(X) >>> clustering.labels_ array([ 0, 0, 0, 1, 1, -1]) >>> clustering DBSCAN(eps=3, min_samples=2)
- fit(X, y=None, sample_weight=None)[source]
-
Выполните кластеризацию DBSCAN из функций или матрицы расстояний.
- Параметры:
-
- X{array-like, разреженная матрица} формы (n_samples, n_features), или (n_samples, n_samples)
-
Обучающие экземпляры для кластеризации или расстояния между экземплярами, если
metric='precomputed'. Если предоставлена разреженная матрица, она будет преобразована в разреженнуюcsr_matrix. - yИгнорируется
-
Не используется, присутствует здесь для согласованности API по умолчанию.
- sample_weightмассив формы (n_samples,), по умолчанию=None
-
Вес каждого образца, такой, что образец с весом не менее
min_samplesсам по себе является ядровым образцом; образец с отрицательным весом может препятствовать тому, чтобы его eps-сосед был ядром. Обратите внимание, что веса абсолютны, и по умолчанию равны 1.
- Возвращает:
-
- selfобъект
-
Возвращает экземпляр self после обучения.
- fit_predict(X, y=None, sample_weight=None)[source]
-
Вычисление кластеров из матрицы данных или расстояний и предсказание меток.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features), or (n_samples, n_samples)
-
Обучающие примеры для кластеризации или расстояния между примерами, если
metric='precomputed'. Если предоставляется разреженная матрица, она будет преобразована в разреженнуюcsr_matrix. - yИгнорируется
-
Не используется, присутствует здесь для соответствия API по умолчанию.
- sample_weightarray-like of shape (n_samples,), default=None
-
Вес каждого образца, такой, что образец с весом не менее
min_samplesсам по себе является ядром; образец с отрицательным весом может препятствовать тому, чтобы его eps-сосед был ядром. Обратите внимание, что веса абсолютны и по умолчанию равны 1.
- Возвращает:
-
- labelsndarray of shape (n_samples,)
-
Метки кластеров. Шумные образцы получают метку -1.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, ознакомьтесь с Руководством пользователя по тому, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
MetadataRequestинкапсулирующий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, вернет параметры этого оценщика и содержащихся в нем подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') DBSCAN[source]
-
Запрос метаданных, переданных в метод
fit.Обратите внимание, что этот метод актуален только если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, обратитесь к Руководству пользователя по тому, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: метаданные запрашиваются и передаются вfitпри наличии. Запрос игнорируется, если метаданные не предоставляются. -
False: метаданные не запрашиваются, и мета-оценщик не будет передавать их вfit. -
None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их. -
str: метаданные должны быть переданы мета-оценщику с этим заданным псевдонимом вместо оригинального имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для других.Добавлен в версии 1.3.
Примечание
Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри
Pipeline. В противном случае он не оказывает влияния.- Параметры:
-
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвfit.
- Возвращает:
-
- selfobject
-
Обновленный объект.
-
- set_params(**params)[source]
-
Установить параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как
Pipeline). Последние имеют параметры вида<component>__<parameter>для возможности обновления каждого компонента вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.cluster.DBSCAN.html