MeanShift
- classsklearn.cluster.MeanShift(*, bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, n_jobs=None, max_iter=300)[исходный код]
-
Кластеризация методом MeanShift с использованием плоского ядра.
Кластеризация методом MeanShift предназначена для обнаружения «скоплений» в сглаженной плотности выборки. Это алгоритм на основе центроидов, который обновляет предполагаемые центроиды, вычисляя среднее значение точек в заданной области. Затем эти кандидаты фильтруются на этапе постобработки, чтобы удалить близкие дубликаты и сформировать итоговый набор центроидов.
Для масштабируемости начальные точки выбираются с помощью биннинга.
Пример использования кластеризации MeanShift см. в разделе: Демонстрация алгоритма кластеризации MeanShift.
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- bandwidthfloat, по умолчанию=None
-
Ширина полосы, используемая в плоском ядре.
Если не задана, ширина полосы оценивается с помощью sklearn.cluster.estimate_bandwidth; рекомендации по масштабируемости см. в документации этой функции (а также в примечаниях ниже).
- seedsarray-like формы (n_samples, n_features), по умолчанию=None
-
Начальные точки, используемые для инициализации ядер. Если не заданы, начальные точки вычисляются с помощью clustering.get_bin_seeds с шириной полосы в качестве размера сетки и значениями по умолчанию для остальных параметров.
- bin_seedingbool, по умолчанию=False
-
Если значение равно True, начальные положения ядер задаются не положениями всех точек, а положениями дискретизированных точек, где точки распределяются по сетке с шагом, соответствующим ширине полосы. Установка этого параметра в True ускоряет работу алгоритма, поскольку инициализируется меньше начальных точек. Значение по умолчанию — False. Игнорируется, если аргумент seeds не равен None.
- min_bin_freqint, по умолчанию=1
-
Для ускорения алгоритма использовать в качестве начальных точек только те ячейки, в которых находится не менее min_bin_freq точек.
- cluster_allbool, по умолчанию=True
-
Если значение равно True, кластеризуются все точки, включая выбросы, не попавшие ни в одно ядро. Выбросы относятся к ближайшему ядру. Если значение равно False, выбросам присваивается метка кластера -1.
- n_jobsint, по умолчанию=None
-
Количество заданий для вычислений. Параллельное выполнение ускоряет следующие задачи:
- Поиск ближайших соседей для оценки ширины полосы и присвоения меток. Подробнее см. в строке документации класса
NearestNeighbors. - Оптимизация методом подъёма в гору для всех начальных точек.
Подробнее см. в глоссарии.
Noneозначает 1, кроме случаев, когда используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в глоссарии. - Поиск ближайших соседей для оценки ширины полосы и присвоения меток. Подробнее см. в строке документации класса
- max_iterint, по умолчанию=300
-
Максимальное число итераций для каждой начальной точки, после которого кластеризация для этой точки завершается, если сходимость ещё не достигнута.
Добавлено в версии 0.22.
- Атрибуты:
-
- cluster_centers_ndarray формы (n_clusters, n_features)
-
Координаты центров кластеров.
- labels_ndarray формы (n_samples,)
-
Метки каждой точки.
- n_iter_int
-
Максимальное число итераций, выполненных для каждой начальной точки.
Добавлено в версии 0.22.
- n_features_in_int
-
Количество признаков, обнаруженных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray формы (
n_features_in_,) -
Названия признаков, обнаруженные во время обучения. Определяется только в том случае, если
Xсодержит названия признаков, все из которых являются строками.Добавлено в версии 1.0.
См. также
KMeans-
Кластеризация методом K-средних.
Примечания
Масштабируемость:
Поскольку в этой реализации используются плоское ядро и Ball Tree для поиска элементов каждого ядра, в пространствах малой размерности сложность стремится к O(T*n*log(n)), где n — число образцов, а T — число точек. В пространствах высокой размерности сложность стремится к O(T*n^2).
Масштабируемость можно повысить, используя меньше начальных точек, например, увеличив значение min_bin_freq в функции get_bin_seeds.
Обратите внимание, что функция estimate_bandwidth значительно хуже масштабируется, чем алгоритм MeanShift, и станет узким местом, если её использовать.
Ссылки
Dorin Comaniciu и Peter Meer, «Mean Shift: A robust approach toward feature space analysis». IEEE Transactions on Pattern Analysis and Machine Intelligence. 2002. С. 603–619.
Примеры
>>> from sklearn.cluster import MeanShift >>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> clustering = MeanShift(bandwidth=2).fit(X) >>> clustering.labels_ array([1, 1, 1, 0, 0, 0]) >>> clustering.predict([[0, 0], [5, 5]]) array([1, 0]) >>> clustering MeanShift(bandwidth=2)
Сравнение кластеризации MeanShift с другими алгоритмами кластеризации см. в разделе Сравнение различных алгоритмов кластеризации на искусственных наборах данных
- fit(X, y=None)[исходный код]
-
Выполнить кластеризацию.
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Образцы для кластеризации.
- yИгнорируется
-
Не используется; присутствует для согласованности API согласно общепринятому соглашению.
- Возвращает:
-
- selfobject
-
Обученный экземпляр.
- fit_predict(X, y=None, **kwargs)[исходный код]
-
Выполнить кластеризацию для
Xи вернуть метки кластеров.- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Входные данные.
- yИгнорируется
-
Не используется; присутствует для согласованности API согласно общепринятому соглашению.
- **kwargsdict
-
Аргументы, передаваемые в
fit.Добавлено в версии 1.4.
- Возвращает:
-
- labelsndarray формы (n_samples,), dtype=np.int64
-
Метки кластеров.
- get_metadata_routing()[исходный код]
-
Получить маршрутизацию метаданных этого объекта.
О том, как работает механизм маршрутизации, см. в Руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если значение равно True, будут возвращены параметры этого оценщика и содержащихся в нём объектов-оценщиков.
- Возвращает:
-
- paramsdict
-
Имена параметров и соответствующие им значения.
- predict(X)[исходный код]
-
Предсказать, к какому ближайшему кластеру относится каждый образец в X.
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Новые данные для предсказания.
- Возвращает:
-
- labelsndarray формы (n_samples,)
-
Индекс кластера, к которому относится каждый образец.
- set_params(**params)[исходный код]
-
Задать параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.cluster.MeanShift.html