局部线性嵌入#
- 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’
- 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
表示使用所有处理器。有关更多详细信息,请参见 词汇表。
- 返回:
- Yndarray of shape (n_samples, n_components)
嵌入向量。
- squared_errorfloat
嵌入向量的重构误差。等效于
norm(Y - W Y, 'fro')**2
,其中 W 是重构权重。
参考文献
[1]Roweis, S. & Saul, L. 通过局部线性嵌入进行非线性降维。科学 290:2323 (2000)。
[2]Donoho, D. & Grimes, C. Hessian 特征映射:用于高维数据局部线性嵌入技术。美国国家科学院院刊。100:5591 (2003)。
[4]Zhang, Z. & Zha, H. 通过切空间对齐进行主流形和非线性降维。上海大学学报。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)