sklearn.manifold.spectral_embedding?

sklearn.manifold.spectral_embedding(adjacency, *, n_components=8, eigen_solver=None, random_state=None, eigen_tol=0.0, norm_laplacian=True, drop_first=True)

[源碼]

將樣本投影到圖拉普拉斯算子的第一個特征向量上。

鄰接矩陣用于計算歸一化的圖拉普拉斯算子,其頻譜(尤其是與最小特征值相關的特征向量)具有將圖分割成可比較大小的分量所需的最小割數的解釋。

即使鄰接變量不是嚴格意義上的圖的鄰接矩陣,而是樣本之間的親和力或相似矩陣(例如歐幾里德距離矩陣或k-NN矩陣的熱核),這種嵌入也可以“起作用”。

必須注意始終使親和矩陣對稱,以便特征向量按預期工作分解。

注:拉普拉斯特征映射是此處實現的實際算法。

用戶指南中閱讀更多內容。

參數 說明
adjacency array-like or sparse graph, shape: (n_samples, n_samples)
要嵌入的圖的鄰接矩陣。
n_components integer, optional, default 8
投影空間的尺寸。
eigen_solver {None, ‘arpack’, ‘lobpcg’, or ‘amg’}, default None
采用特征值分解策略。AMG要求安裝pyamg。在非常大且稀疏的問題上,它可能會更快,但也可能導致不穩定。
random_state int, RandomState instance, default=None
確定solver=='amg' 時用于lobpcg特征向量分解初始化的隨機數生成器。在多個函數調用之間傳遞int以獲得可重復的結果。請參閱:term: Glossary <random_state>.
eigen_tol float, optional, default=0.0
使用arpack eigen_solver時,拉普拉斯矩陣特征分解的停止準則。
norm_laplacian bool,可選,默認為True
如果為True,則計算歸一化的拉普拉斯算子。
drop_first bool,可選,默認為True
是否刪除第一個特征向量。對于譜圖嵌入,這應該為True,因為第一個特征向量對于連接的圖應該是常數向量,但是對于譜圖聚類,應該保留為False以保留第一個特征向量。
返回值 說明
embedding array, shape=(n_samples, n_components)
減少的樣本。

注:

當圖形具有一個相連的分量時,頻譜嵌入(拉普拉斯特征圖)最為有用。如果圖中有很多分量,則前幾個特征向量將簡單地揭示圖的連接分量。

參考文獻

1 https://en.wikipedia.org/wiki/LOBPCG

2 Toward the Optimal Preconditioned Eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient Method Andrew V. Knyazev https://doi.org/10.1137%2FS1064827500366124