SpectralClustering
- classsklearn.cluster.SpectralClustering(n_clusters=8, *, eigen_solver=None, n_components=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol='auto', assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None, verbose=False)[source]
-
Примените кластеризацию к проекции нормированной лапласианской матрицы.
На практике спектральная кластеризация очень полезна, когда структура отдельных кластеров сильно невыпукла, или, более общо, когда мера центра и разброса кластера не является подходящим описанием всего кластера, например, когда кластеры представляют собой вложенные окружности на 2D плоскости.
Если матрица сродства является матрицей смежности графа, этот метод можно использовать для нахождения нормированных разрезов графа [1], [2].
При вызове
fit, матрица сродства строится с использованием либо функции ядра, такой как гауссово (также известное как RBF) ядро с евклидовым расстояниемd(X, X):np.exp(-gamma * d(X,X) ** 2)
или матрицы связности k-ближайших соседей.
В качестве альтернативы, пользователь может указать матрицу сродства, задав
affinity='precomputed'.Дополнительную информацию можно найти в Руководстве пользователя.
- Параметры:
-
- n_clustersint, по умолчанию=8
-
Размерность подпространства проекции.
- eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’}, по умолчанию=None
-
Стратегия вычисления собственных значений. AMG требует наличия пакета pyamg. Он может быть быстрее для очень больших разреженных задач, но также может привести к нестабильности. Если None, то
'arpack'используется. Дополнительные сведения о'lobpcg'см. в [4]. - n_componentsint, по умолчанию=None
-
Количество собственных векторов, используемых для спектрального вложения. Если None, по умолчанию
n_clusters. - random_stateint, RandomState instance, по умолчанию=None
-
Генератор псевдослучайных чисел, используемый для инициализации разложения собственных векторов lobpcg, когда
eigen_solver == 'amg', и для инициализации K-Means. Используйте целое число, чтобы сделать результаты детерминированными при каждом вызове (см. Глоссарий).Примечание
При использовании
eigen_solver == 'amg', необходимо также установить глобальное семя numpy с помощьюnp.random.seed(int), чтобы получить детерминированные результаты. Дополнительную информацию см. в pyamg/pyamg#139. - n_initint, по умолчанию=10
-
Количество раз, когда алгоритм k-means будет запущен с различными начальными точками центроидов. Конечные результаты будут лучшим результатом n_init последовательных запусков с точки зрения инерции. Используется только если
assign_labels='kmeans'. - gammafloat, по умолчанию=1.0
-
Коэффициент ядра для ядер rbf, poly, sigmoid, laplacian и chi2. Игнорируется для
affinity='nearest_neighbors',affinity='precomputed'илиaffinity='precomputed_nearest_neighbors'. - affinitystr or callable, по умолчанию=’rbf’
-
- Как построить матрицу сродства.
-
- ‘nearest_neighbors’: построить матрицу сродства, вычислив граф ближайших соседей.
- ‘rbf’: построить матрицу сродства, используя радиальную базисную функцию (RBF) ядро.
- ‘precomputed’: интерпретировать
Xкак предварительно вычисленную матрицу сродства, где большие значения указывают на большее сходство между экземплярами. - ‘precomputed_nearest_neighbors’: интерпретировать
Xкак разреженный граф предварительно вычисленных расстояний и построить бинарную матрицу сродства изn_neighborsближайших соседей каждого экземпляра. - одно из ядер, поддерживаемых
pairwise_kernels.
Следует использовать только ядра, которые дают оценки сходства (неотрицательные значения, которые увеличиваются с увеличением сходства). Это свойство не проверяется алгоритмом кластеризации.
- n_neighborsint, по умолчанию=10
-
Количество соседей, используемых при построении матрицы сродства с использованием метода ближайших соседей. Игнорируется для
affinity='rbf'. - eigen_tolfloat, по умолчанию=”auto”
-
Критерий остановки для собственного разложения матрицы Лапласа. Если
eigen_tol="auto"то переданная толерантность будет зависеть отeigen_solver:- Если
eigen_solver="arpack", тогдаeigen_tol=0.0; - Если
eigen_solver="lobpcg"илиeigen_solver="amg", тогдаeigen_tol=None, что настраивает базовый решательlobpcgдля автоматического определения значения в соответствии с их эвристиками. Подробности см. вscipy.sparse.linalg.lobpcg.
Обратите внимание, что при использовании
eigen_solver="lobpcg"илиeigen_solver="amg"значенияtol<1e-5могут привести к проблемам сходимости и должны быть избегаемы.Добавлен в версии 1.2: Добавлен параметр ‘auto’.
- Если
- assign_labels{‘kmeans’, ‘discretize’, ‘cluster_qr’}, по умолчанию=’kmeans’
-
Стратегия присвоения меток в пространстве вложения. Существует два способа присвоения меток после вложения Лапласа. K-means — популярный выбор, но он может быть чувствительным к инициализации. Дискретизация — это другой подход, который менее чувствителен к случайной инициализации [3]. Метод cluster_qr [5] напрямую извлекает кластеры из собственных векторов в спектральной кластеризации. В отличие от k-means и дискретизации, cluster_qr не имеет параметров настройки и не выполняет итераций, но может превзойти k-means и дискретизацию по качеству и скорости.
Изменено в версии 1.1: Добавлен новый метод метки ‘cluster_qr’.
- degreefloat, по умолчанию=3
-
Степень полиномиального ядра. Игнорируется другими ядрами.
- coef0float, по умолчанию=1
-
Нулевой коэффициент для полиномиальных и сигмоидных ядер. Игнорируется другими ядрами.
- kernel_paramsdict of str to any, по умолчанию=None
-
Параметры (ключевые аргументы) и значения для ядра, переданные как вызываемый объект. Игнорируется другими ядрами.
- n_jobsint, по умолчанию=None
-
Количество параллельных задач, выполняемых при
affinity='nearest_neighbors'илиaffinity='precomputed_nearest_neighbors'. Поиск соседей будет выполняться параллельно.Noneозначает 1, за исключением контекстаjoblib.parallel_backend.-1означает использование всех процессоров. Дополнительные сведения см. в Глоссарии. - verbosebool, по умолчанию=False
-
Режим отображения сообщений.
Добавлен в версии 0.24.
- Атрибуты:
-
- affinity_matrix_array-like of shape (n_samples, n_samples)
-
Матрица сродства, используемая для кластеризации. Доступна только после вызова
fit. - labels_ndarray of shape (n_samples,)
-
Метки каждого элемента
- n_features_in_int
-
Количество признаков, увиденных во время fit.
Добавлен в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Имена признаков, увиденные во время fit. Определяются только тогда, когда
Xимеет имена признаков, которые являются строками.Добавлен в версии 1.0.
См. также
sklearn.cluster.KMeans-
Кластеризация K-means.
sklearn.cluster.DBSCAN-
Кластеризация пространственных данных с применением шума на основе плотности.
Примечания
Матрица расстояний, для которой 0 указывает на идентичные элементы, а большие значения — на очень разные элементы, может быть преобразована в матрицу сродства/сходства, которая подходит для алгоритма, путем применения гауссова (также известного как RBF, теплового) ядра:
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
где
delta— свободный параметр, представляющий ширину гауссова ядра.Альтернативой является использование симметричной версии матрицы связности k-ближайших соседей точек.
Если пакет pyamg установлен, он используется, что значительно ускоряет вычисления.
Ссылки
- [4]
Примеры
>>> from sklearn.cluster import SpectralClustering >>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> clustering = SpectralClustering(n_clusters=2, ... assign_labels='discretize', ... random_state=0).fit(X) >>> clustering.labels_ array([1, 1, 1, 0, 0, 0]) >>> clustering SpectralClustering(assign_labels='discretize', n_clusters=2, random_state=0)- fit(X, y=None)[source]
-
Выполнить спектральную кластеризацию из функций или матрицы близости.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
-
Обучающие примеры для кластеризации, сходства/сродства между примерами, если
affinity='precomputed', или расстояния между примерами, еслиaffinity='precomputed_nearest_neighbors. Если разреженная матрица предоставляется в формате, отличном отcsr_matrix,csc_matrix, илиcoo_matrix, она будет преобразована в разреженнуюcsr_matrix. - yИгнорируется
-
Не используется, присутствует здесь для согласованности API по умолчанию.
- Возвращает:
-
- selfобъект
-
Обученный экземпляр оценщика.
- fit_predict(X, y=None)[source]
-
Выполнить спектральную кластеризацию на
Xи вернуть метки кластеров.- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
-
Обучающие примеры для кластеризации, сходства/сродства между примерами, если
affinity='precomputed', или расстояния между примерами, еслиaffinity='precomputed_nearest_neighbors. Если разреженная матрица предоставляется в формате, отличном отcsr_matrix,csc_matrix, илиcoo_matrix, она будет преобразована в разреженнуюcsr_matrix. - yИгнорируется
-
Не используется, присутствует здесь для согласованности API по умолчанию.
- Возвращает:
-
- labelsndarray of shape (n_samples,)
-
Метки кластеров.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, ознакомьтесь с Руководством пользователя о том, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, вернет параметры этого оценщика и содержащихся вложенных подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные со значениями.
- set_params(**params)[source]
-
Установить параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как
Pipeline). Последние имеют параметры вида<component>__<parameter>для возможности обновления каждого компонента вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
Примеры галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.cluster.SpectralClustering.html