locally_linear_embedding#

sklearn.manifold.locally_linear_embedding(X, *, n_neighbors, n_components, reg=0.001, eigen_solver='auto', tol=1e-06, max_iter=100, method='standard', hessian_tol=0.0001, modified_tol=1e-12, random_state=None, n_jobs=None)[source]#

对数据执行局部线性嵌入分析。

用户指南中了解更多。

参数:
X{array-like, NearestNeighbors}

样本数据,形状 = (n_samples, n_features),以 NumPy 数组或 NearestNeighbors 对象的形式提供。

n_neighborsint

为每个点考虑的近邻数量。

n_componentsint

流形的坐标数量。

regfloat, default=1e-3

正则化常数,乘以距离局部协方差矩阵的迹。

eigen_solver{‘auto’, ‘arpack’, ‘dense’}, default=’auto’

auto:算法将尝试为输入数据选择最佳方法

arpack在移位反转模式下使用 Arnoldi 迭代。

对于此方法,M 可以是密集矩阵、稀疏矩阵或一般线性算子。警告:ARPACK 对于某些问题可能不稳定。最好尝试几个随机种子以检查结果。

dense使用标准密集矩阵运算进行特征值

分解。对于此方法,M 必须是数组或矩阵类型。大型问题应避免使用此方法。

tolfloat, default=1e-6

‘arpack’ 方法的容差。如果 eigen_solver=='dense' 则不使用。

max_iterint, default=100

arpack 求解器的最大迭代次数。

method{‘standard’, ‘hessian’, ‘modified’, ‘ltsa’}, default=’standard’
standard使用标准局部线性嵌入算法。

参见参考文献 [1]

hessian使用 Hessian 特征映射方法。此方法要求

n_neighbors > n_components * (1 + (n_components + 1) / 2。参见参考文献 [2]

modified使用改进的局部线性嵌入算法。

参见参考文献 [3]

ltsa使用局部切线空间对齐算法

参见参考文献 [4]

hessian_tolfloat, default=1e-4

Hessian 特征映射方法的容差。仅当 method == ‘hessian’ 时使用。

modified_tolfloat, default=1e-12

改进 LLE 方法的容差。仅当 method == ‘modified’ 时使用。

random_stateint, RandomState instance, default=None

确定当 solver == ‘arpack’ 时随机数生成器。传入一个整数以在多次函数调用中获得可重现的结果。参见词汇表

n_jobsint or None, default=None

用于近邻搜索的并行作业数。None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。有关更多详细信息,请参见词汇表

返回:
Y形状为 (n_samples, n_components) 的 ndarray

嵌入向量。

squared_errorfloat

嵌入向量的重构误差。相当于 norm(Y - W Y, 'fro')**2,其中 W 是重构权重。

参考文献

[1]

Roweis, S. & Saul, L. 通过局部线性嵌入的非线性降维。Science 290:2323 (2000)。

[2]

Donoho, D. & Grimes, C. Hessian 特征映射:高维数据的局部线性嵌入技术。Proc Natl Acad Sci U S A. 100:5591 (2003)。

[4]

Zhang, Z. & Zha, H. 通过切线空间对齐的主流形和非线性降维。Journal of Shanghai Univ. 8:406 (2004)

示例

>>> from sklearn.datasets import load_digits
>>> from sklearn.manifold import locally_linear_embedding
>>> X, _ = load_digits(return_X_y=True)
>>> X.shape
(1797, 64)
>>> embedding, _ = locally_linear_embedding(X[:100],n_neighbors=5, n_components=2)
>>> embedding.shape
(100, 2)