Spec-Zone.ru › scikit-learn

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 установлен, он используется, что значительно ускоряет вычисления.

Ссылки

[1]

Нормализованные разрезы и сегментация изображений, 2000 г. Цзяньбо Ши, Джитендра Малик

[2]

Учебное пособие по спектральному кластеризации, 2007 г. Ульрике фон Люксбург

[3]

Мультиклассовая спектральная кластеризация, 2003 г. Стелла И. Ю, Цзяньбо Ши

[4]

К оптимальному прекондиционированному собственному решателю: Метод локально оптимального прекондиционированного сопряжённого градиента, 2001 г. А. В. Князев Журнал SIAM по вычислительной науке 23, № 2, стр. 517-541.

[5]

Простая, прямая и эффективная спектральная кластеризация по нескольким способам, 2019 г. Анил Дамле, Виктор Минден, Лексинг Йинг

Примеры

>>> 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API