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)[исходный код]
-
Выполняет кластеризацию проекции нормализованного лапласиана.
На практике спектральная кластеризация очень полезна, когда структура отдельных кластеров является сильно невыпуклой, или, в более общем случае, когда оценка центра и разброса кластера не подходит для описания кластера целиком, например, когда кластеры представляют собой вложенные окружности на двумерной плоскости.
Если матрица близости является матрицей смежности графа, этот метод можно использовать для поиска нормализованных разрезов графа [1], [2].
При вызове
fitматрица близости строится с использованием либо ядерной функции, например гауссовского ядра (также известного как ядро RBF) с евклидовым расстояниемd(X, X):np.exp(-gamma * d(X,X) ** 2)
либо матрицы связности k ближайших соседей.
Также можно задать предоставленную пользователем матрицу близости, установив
affinity='precomputed'.Подробнее см. в Руководстве пользователя.
- Параметры:
-
- n_clustersint, default=8
-
Количество кластеров для извлечения.
- eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’}, default=None
-
Стратегия разложения на собственные значения. Для AMG необходимо установить pyamg. Этот метод может быть быстрее при работе с очень большими разреженными задачами, но также может привести к нестабильности. Если None, используется
'arpack'. Подробнее см. [4], где рассматривается'lobpcg'. - n_componentsint, default=None
-
Количество собственных векторов для спектрального вложения. Если None, по умолчанию используется
n_clusters. - random_stateint, RandomState instance, default=None
-
Генератор псевдослучайных чисел для инициализации разложения собственных векторов lobpcg при
eigen_solver == 'amg'и для инициализации K-Means. Используйте целое число, чтобы результаты оставались неизменными при повторных вызовах (см. Глоссарий).Примечание
При использовании
eigen_solver == 'amg'для получения детерминированных результатов необходимо также зафиксировать глобальное начальное значение numpy с помощьюnp.random.seed(int). Дополнительную информацию см. в pyamg/pyamg#139. - n_initint, default=10
-
Количество запусков алгоритма k-means с разными начальными значениями центроидов. Итоговым результатом будет лучший результат из n_init последовательных запусков по показателю инерции. Используется только при
assign_labels='kmeans'. - gammafloat, default=1.0
-
Коэффициент ядра для ядер rbf, poly, sigmoid, laplacian и chi2. Игнорируется для
affinity='nearest_neighbors',affinity='precomputed'илиaffinity='precomputed_nearest_neighbors'. - affinitystr or callable, default=’rbf’
-
- Способ построения матрицы близости.
-
- ‘nearest_neighbors’: построить матрицу близости, вычислив граф ближайших соседей.
- ‘rbf’: построить матрицу близости с использованием ядра радиальной базисной функции (RBF).
- ‘precomputed’: интерпретировать
Xкак предварительно вычисленную матрицу близости, в которой большие значения указывают на большее сходство между объектами. - ‘precomputed_nearest_neighbors’: интерпретировать
Xкак разреженный граф предварительно вычисленных расстояний и построить бинарную матрицу близости поn_neighborsближайшим соседям каждого объекта. - одно из ядер, поддерживаемых
pairwise_kernels.
Следует использовать только ядра, возвращающие оценки сходства (неотрицательные значения, возрастающие вместе со сходством). Алгоритм кластеризации не проверяет выполнение этого свойства.
- n_neighborsint, default=10
-
Количество соседей для построения матрицы близости методом ближайших соседей. Игнорируется для
affinity='rbf'. - eigen_tolfloat, default=”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’}, default=’kmeans’
-
Стратегия присвоения меток в пространстве вложения. После вложения Лапласа есть два способа назначить метки. k-means — популярный вариант, но он чувствителен к инициализации. Дискретизация — ещё один подход, менее чувствительный к случайной инициализации [3]. Метод cluster_qr [5] непосредственно извлекает кластеры из собственных векторов при спектральной кластеризации. В отличие от k-means и дискретизации, cluster_qr не имеет настраиваемых параметров и не выполняет итераций, но при этом может превосходить k-means и дискретизацию как по качеству, так и по скорости.
Изменено в версии 1.1: Добавлен новый метод присвоения меток ‘cluster_qr’.
- degreefloat, default=3
-
Степень полиномиального ядра. Игнорируется другими ядрами.
- coef0float, default=1
-
Свободный коэффициент для полиномиального ядра и ядра sigmoid. Игнорируется другими ядрами.
- kernel_paramsdict of str to any, default=None
-
Параметры (именованные аргументы) и значения для ядра, передаваемого в виде вызываемого объекта. Игнорируется другими ядрами.
- n_jobsint, default=None
-
Количество параллельных заданий для выполнения при
affinity='nearest_neighbors'илиaffinity='precomputed_nearest_neighbors'. Поиск соседей будет выполняться параллельно.Noneозначает 1, если только не используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в Глоссарии. - verbosebool, default=False
-
Режим подробного вывода.
Добавлено в версии 0.24.
- Атрибуты:
-
- affinity_matrix_array-like of shape (n_samples, n_samples)
-
Матрица близости, используемая для кластеризации. Доступна только после вызова
fit. - labels_ndarray of shape (n_samples,)
-
Метки каждой точки
- n_features_in_int
-
Количество признаков, обнаруженных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Имена признаков, обнаруженных во время обучения. Определяется только в том случае, если
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)[исходный код]
-
Выполняет спектральную кластеризацию на основе признаков или матрицы близости.
- Параметры:
-
- 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.
- Возвращает:
-
- selfobject
-
Обученный экземпляр оценщика.
- fit_predict(X, y=None)[исходный код]
-
Выполняет спектральную кластеризацию для
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()[исходный код]
-
Возвращает маршрутизацию метаданных этого объекта.
О том, как работает механизм маршрутизации, см. в Руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Возвращает параметры этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, возвращает параметры этого оценщика и содержащихся в нём подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные их значениям.
- set_params(**params)[исходный код]
-
Задаёт параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.cluster.SpectralClustering.html