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)#

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

更多信息请参阅 用户指南

Parameters:
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’ 时确定随机数生成器。 传递一个 int 以在多次函数调用中获得可重复的结果。 参见 术语

n_jobsint or None, default=None

用于邻居搜索的并行作业数。 None 意味着 1,除非在 joblib.parallel_backend 上下文中。 -1 意味着使用所有处理器。参见 术语 了解更多详情。

Returns:
Yndarray of shape (n_samples, n_components)

嵌入向量。

squared_errorfloat

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

References

[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. 主流形和通过切空间对齐的非线性降维。 上海大学学报。 8:406 (2004)

Examples

>>> 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)