SpectralEmbedding#
- class sklearn.manifold.SpectralEmbedding(n_components=2, *, affinity='nearest_neighbors', gamma=None, random_state=None, eigen_solver=None, eigen_tol='auto', n_neighbors=None, n_jobs=None)[source]#
用于非线性降维的谱嵌入。
根据指定函数形成亲和矩阵,并对相应的图拉普拉斯矩阵进行谱分解。得到的变换由每个数据点的特征向量值给出。
注意:此处实现的实际算法是拉普拉斯特征映射 (Laplacian Eigenmaps)。
更多信息请参阅用户指南。
- 参数:
- n_components整型,默认值=2
投影子空间的维度。
- affinity{‘nearest_neighbors’, ‘rbf’, ‘precomputed’, ‘precomputed_nearest_neighbors’} 或可调用对象,默认值=’nearest_neighbors’
- 如何构建亲和矩阵。
‘nearest_neighbors’:通过计算最近邻图来构建亲和矩阵。
‘rbf’:通过计算径向基函数 (RBF) 核来构建亲和矩阵。
‘precomputed’:将
X
解释为预计算的亲和矩阵。‘precomputed_nearest_neighbors’:将
X
解释为预计算最近邻的稀疏图,并通过选择n_neighbors
个最近邻来构建亲和矩阵。可调用对象:使用传入的函数作为亲和函数,该函数接受数据矩阵 (n_samples, n_features) 并返回亲和矩阵 (n_samples, n_samples)。
- gamma浮点型,默认值=None
RBF 核的核系数。如果为 None,gamma 将设置为 1/n_features。
- random_state整型,RandomState 实例或 None,默认值=None
用于初始化当
eigen_solver == 'amg'
时 lobpcg 特征向量分解的伪随机数生成器,以及用于 K-Means 初始化。使用整数使多次调用的结果具有确定性(参阅术语表)。注意
当使用
eigen_solver == 'amg'
时,必须通过np.random.seed(int)
固定全局 numpy 种子以获得确定性结果。更多信息请参阅 pyamg/pyamg#139。- eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’},默认值=None
要使用的特征值分解策略。AMG 需要安装 pyamg。它在非常大的稀疏问题上可能更快。如果为 None,则使用
'arpack'
。- eigen_tol浮点型,默认值=“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 版本新增。
- n_neighbors整型,默认值=None
用于构建最近邻图的最近邻数量。如果为 None,n_neighbors 将设置为 max(n_samples/10, 1)。
- n_jobs整型,默认值=None
要运行的并行作业数量。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。详情请参阅术语表。
- 属性:
另请参阅
Isomap
通过等距映射进行的非线性降维。
参考文献
On Spectral Clustering: Analysis and an algorithm, 2001 Andrew Y. Ng, Michael I. Jordan, Yair Weiss
Normalized cuts and image segmentation, 2000 Jianbo Shi, Jitendra Malik
示例
>>> from sklearn.datasets import load_digits >>> from sklearn.manifold import SpectralEmbedding >>> X, _ = load_digits(return_X_y=True) >>> X.shape (1797, 64) >>> embedding = SpectralEmbedding(n_components=2) >>> X_transformed = embedding.fit_transform(X[:100]) >>> X_transformed.shape (100, 2)
- fit(X, y=None)[source]#
根据 X 中的数据拟合模型。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
训练向量,其中
n_samples
是样本数量,n_features
是特征数量。如果 affinity 为“precomputed”,则
X
:形状为 (n_samples, n_samples) 的 {array-like, sparse matrix},将X
解释为根据样本计算的预计算邻接图。- y忽略
未使用,根据惯例为了 API 一致性而存在。
- 返回:
- self对象
返回实例本身。
- fit_transform(X, y=None)[source]#
根据 X 中的数据拟合模型并变换 X。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
训练向量,其中
n_samples
是样本数量,n_features
是特征数量。如果 affinity 为“precomputed”,则
X
:形状为 (n_samples, n_samples) 的 {array-like, sparse matrix},将X
解释为根据样本计算的预计算邻接图。- y忽略
未使用,根据惯例为了 API 一致性而存在。
- 返回:
- X_new形状为 (n_samples, n_components) 的 array-like
训练矩阵的谱嵌入。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个包含路由信息的
MetadataRequest
。