spectral_embedding#
- sklearn.manifold.spectral_embedding(adjacency, *, n_components=8, eigen_solver=None, random_state=None, eigen_tol='auto', norm_laplacian=True, drop_first=True)[источник]#
Проецируйте выборку на первые собственные векторы графа Лапласиана.
Матрица смежности используется для вычисления нормализованного лапласиана графа, чей спектр (особенно собственные векторы, связанные с наименьшими собственными значениями) имеет интерпретацию в терминах минимального количества разрезов, необходимых для разделения графа на компоненты сопоставимого размера.
Это вложение также может 'работать', даже если
adjacencyпеременная не является строго матрицей смежности графа, а скорее матрицей сходства или подобия между образцами (например, тепловое ядро матрицы евклидовых расстояний или матрица k-NN).Однако необходимо соблюдать осторожность, чтобы всегда делать матрицу сходства симметричной, чтобы разложение по собственным векторам работало как ожидается.
Примечание: Laplacian Eigenmaps — это фактический алгоритм, реализованный здесь.
Подробнее в Руководство пользователя.
- Параметры:
- adjacency{array-like, sparse graph} формы (n_samples, n_samples)
Матрица смежности графа для встраивания.
- n_componentsint, по умолчанию=8
Размерность проекционного подпространства.
- eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’}, default=None
Стратегия разложения по собственным значениям для использования. AMG требует установки pyamg. Он может быть быстрее на очень больших, разреженных задачах, но также может приводить к нестабильностям. Если None, то
'arpack'используется.- random_stateint, экземпляр RandomState или None, по умолчанию=None
Псевдослучайный генератор чисел, используемый для инициализации разложения собственных векторов lobpcg, когда
eigen_solver == 'amg', и для инициализации K-Means. Используйте целое число, чтобы результаты были детерминированными между вызовами (см. Глоссарий).Примечание
При использовании
eigen_solver == 'amg', необходимо также зафиксировать глобальное начальное значение numpy с помощьюnp.random.seed(int)для получения детерминированных результатов. См. pyamg/pyamg#139 для дополнительной информации.- 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="amg"значенияtol<1e-5может привести к проблемам сходимости и должен быть избегаем.Добавлено в версии 1.2: Добавлена опция 'auto'.
- norm_laplacianbool, по умолчанию=True
Если True, то вычисляет симметричный нормированный лапласиан.
- drop_firstbool, по умолчанию=True
Удалять ли первый собственный вектор. Для спектрального вложения это должно быть True, так как первый собственный вектор должен быть постоянным вектором для связного графа, но для спектральной кластеризации это должно оставаться False, чтобы сохранить первый собственный вектор.
- Возвращает:
- вложениеndarray формы (n_samples, n_components)
Уменьшенные выборки.
Примечания
Спектральное вложение (собственные отображения Лапласа) наиболее полезно, когда граф имеет одну связную компоненту. Если граф имеет много компонент, первые несколько собственных векторов просто выявят связные компоненты графа.
Ссылки
Примеры
>>> from sklearn.datasets import load_digits >>> from sklearn.neighbors import kneighbors_graph >>> from sklearn.manifold import spectral_embedding >>> X, _ = load_digits(return_X_y=True) >>> X = X[:100] >>> affinity_matrix = kneighbors_graph( ... X, n_neighbors=int(X.shape[0] / 10), include_self=True ... ) >>> # make the matrix symmetric >>> affinity_matrix = 0.5 * (affinity_matrix + affinity_matrix.T) >>> embedding = spectral_embedding(affinity_matrix, n_components=2, random_state=42) >>> embedding.shape (100, 2)