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矩阵的热核)。然而,必须注意始终使亲和力矩阵对称,以便特征向量分解按预期工作。
注意:拉普拉斯特征映射是这里实现的实际算法。
阅读更多的 User Guide .
- 参数:
- adjacency形状(n_samples,n_samples)的{类数组,稀疏图}
要嵌入的图的邻近矩阵。
- n_componentsint, default=8
投影子空间的维度。
- eigen_solver{'arpack', 'lobpcg', 'amg'}, default=None
要使用的特征值分解策略。AMG需要安装pyamg。它可以在非常大的稀疏问题上更快,但也可能导致不稳定。如果没有,那么
'arpack'
采用了- random_stateint,RandomState实例或无,默认=无
伪随机数生成器,用于初始化lobpcg本征载体分解,当
eigen_solver == 'amg'
,以及K-Means初始化。使用int使结果在调用之间具有确定性(请参阅 Glossary ).备注
当使用
eigen_solver == 'amg'
,也有必要用来修复全球麻木的种子np.random.seed(int)
以获得确定性结果。欲了解更多信息,请访问https://github.com/pyamg/pyamg/issues/139。- 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="amg"
值tol<1e-5
可能会导致趋同问题,应该避免。Added in version 1.2: 添加了“自动”选项。
- norm_laplacian布尔,默认=True
如果为真,则计算对称正规化拉普拉斯方程。
- drop_first布尔,默认=True
是否删除第一个特征载体。对于谱嵌入,这应该是True,因为第一个特征向量应该是连通图的恒定向量,但对于谱集群,这应该保持为False以保留第一个特征向量。
- 返回:
- embedding形状的nd数组(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)