Schubert, E., Sander, J., Ester, M., Kriegel, H. P., & Xu, X. (2017). В ACM Transactions on Database Systems (TODS), 42(3), 19.#

класс sklearn.cluster.Schubert, E., Sander, J., Ester, M., Kriegel, H. P., & Xu, X. (2017). В ACM Transactions on Database Systems (TODS), 42(3), 19.(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', степень=3, coef0=1, kernel_params=None, n_jobs=None, verbose=False)[источник]#

Применить кластеризацию к проекции нормализованного лапласиана.

На практике спектральная кластеризация очень полезна, когда структура отдельных кластеров сильно невыпуклая, или в более общем случае, когда мера центра и разброса кластера не является подходящим описанием всего кластера, например, когда кластеры представляют собой вложенные круги на 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’}, default=None

Стратегия разложения по собственным значениям для использования. AMG требует установки pyamg. Он может быть быстрее на очень больших, разреженных задачах, но также может приводить к нестабильностям. Если None, то 'arpack' используется. См. [4] для получения дополнительных сведений о 'lobpcg'.

n_componentsint, default=None

Количество собственных векторов для использования в спектральном вложении. Если None, по умолчанию n_clusters.

random_stateint, экземпляр RandomState, по умолчанию=None

Псевдослучайный генератор чисел, используемый для инициализации разложения собственных векторов lobpcg, когда eigen_solver == 'amg', и для инициализации K-Means. Используйте целое число, чтобы результаты были детерминированными между вызовами (см. Глоссарий).

Примечание

При использовании eigen_solver == 'amg', необходимо также зафиксировать глобальное начальное значение numpy с помощью np.random.seed(int) для получения детерминированных результатов. См. pyamg/pyamg#139 для дополнительной информации.

n_initint, по умолчанию=10

Количество запусков алгоритма k-средних с разными начальными центрами. Конечные результаты будут лучшим выводом из n_init последовательных запусков с точки зрения инерции. Используется только если assign_labels='kmeans'.

gammafloat, по умолчанию=1.0

Коэффициент ядра для ядер rbf, poly, sigmoid, laplacian и chi2. Игнорируется для affinity='nearest_neighbors', affinity='precomputed' или affinity='precomputed_nearest_neighbors'.

affinitystr или 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-средних — популярный выбор, но он может быть чувствителен к инициализации. Дискретизация — другой подход, который менее чувствителен к случайной инициализации [3]. Метод cluster_qr [5] непосредственно извлекает кластеры из собственных векторов в спектральной кластеризации. В отличие от k-means и дискретизации, cluster_qr не имеет настраиваемых параметров и не выполняет итераций, но может превзойти k-means и дискретизацию как по качеству, так и по скорости.

Изменено в версии 1.1: Добавлен новый метод маркировки 'cluster_qr'.

степеньfloat, по умолчанию=3

Степень полиномиального ядра. Игнорируется другими ядрами.

coef0float, по умолчанию=1

Нулевой коэффициент для полиномиальных и сигмоидных ядер. Игнорируется другими ядрами.

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, по умолчанию=False

Режим подробности.

Добавлено в версии 0.24.

Атрибуты:
affinity_matrix_array-like формы (n_samples, n_samples)

Матрица сходства, используемая для кластеризации. Доступна только после вызова fit.

labels_ndarray формы (n_samples,)

Метки каждой точки

n_features_in_int

Количество признаков, замеченных во время fit.

Добавлено в версии 0.24.

feature_names_in_ndarray формы (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 является свободным параметром, представляющим ширину гауссова ядра.

An alternative is to take a symmetric version of the k-nearest neighbors connectivity matrix of the points.

Если установлен пакет pyamg, он используется: это значительно ускоряет вычисления.

Ссылки

Примеры

>>> 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} формы (n_samples, n_features) или (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} формы (n_samples, n_features) или (n_samples, n_samples)

Обучающие экземпляры для кластеризации, сходства / аффинности между экземплярами, если affinity='precomputed', или расстояния между экземплярами, если affinity='precomputed_nearest_neighbors. Если разреженная матрица предоставлена в формате, отличном от csr_matrix, csc_matrix, или coo_matrix, он будет преобразован в разреженную csr_matrix.

yИгнорируется

Не используется, присутствует здесь для согласованности API по соглашению.

Возвращает:
меткиndarray формы (n_samples,)

Метки кластеров.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.