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)[源代码]#

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

阅读更多的 User Guide .

参数:
X{array-like,NearestNeighbors}

示例数据,shape =(n_samples,n_features),采用numpy数组或NearestNeighbors对象的形式。

n_neighborsint

每个点要考虑的邻居数量。

n_componentsint

Number of coordinates for the manifold.

reg浮点数,默认值= 1 e-3

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

eigen_solver' Auto ',' arpack ',默认='

Auto:算法将尝试选择输入数据的最佳方法

arpack在转换-倒置模式中使用arnoldi迭代。

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

密集对特征值使用标准稠密矩阵运算

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

tolfloat,默认= 1 e-6

如果eigen_solver==' dense ',则不使用“arpack”方法的公差。

max_iterint,默认=100

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

method'标准',' hessian ','修改',&
标准使用标准的局部线性嵌入算法。

见参考 [1]

Hessian使用黑森特征图方法。 这种方法需要

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

改性使用修改后的局部线性嵌入算法。

见参考 [3]

LTSA使用局部切空间对齐算法

见参考 [4]

hessian_tolfloat,默认= 1 e-4

Hessian特征映射方法的容忍度。仅在方法==“hessian”时使用。

modified_tol浮点数,默认值= 1 e-12

修改后的LLE方法的公差。仅在方法==“修改”时使用。

random_stateint,RandomState实例,默认=无

确定随机数生成器 solver ==' arpack '。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

n_jobsint或无,默认=无

为邻居搜索运行的并行作业数。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

返回:
Y形状的nd数组(n_samples,n_components)

嵌入载体。

squared_error浮子

嵌入载体的重建错误。相当于 norm(Y - W Y, 'fro')**2 ,其中W是重建权重。

引用

[1]

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

[2]

Donoho, D. & Grimes, C. Hessian eigenmaps: Locally linear embedding techniques for high-dimensional data. Proc Natl Acad Sci U S A. 100:5591 (2003).

[3]

Zhang, Z. & Wang, J. MLLE: Modified Locally Linear Embedding Using Multiple Weights. <https://citeseerx.ist.psu.edu/doc_view/pid/0b060fdbd92cbcc66b383bcaa9ba5e5e624d7ee3> _

[4]

张,Z。&查,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)