局部線性嵌入#

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)[原始碼]#

在資料上執行局部線性嵌入分析。

使用者指南中閱讀更多內容。

參數:
X{類陣列, NearestNeighbors}

樣本資料,形狀 = (n_samples, n_features),以 numpy 陣列或 NearestNeighbors 物件的形式。

n_neighborsint

每個點要考慮的鄰居數量。

n_componentsint

流形的座標數量。

regfloat,預設值=1e-3

正規化常數,乘以距離局部共變異數矩陣的跡。

eigen_solver{‘auto’, ‘arpack’, ‘dense’},預設值=’auto’

auto:演算法會嘗試選擇適合輸入資料的最佳方法

arpack在 shift-invert 模式中使用 arnoldi 迭代。

對於此方法,M 可以是稠密矩陣、稀疏矩陣或通用線性運算子。警告:ARPACK 對於某些問題可能不穩定。最好嘗試幾個隨機種子以檢查結果。

dense對特徵值分解使用標準稠密矩陣運算。

對於此方法,M 必須是陣列或矩陣類型。對於大型問題應避免使用此方法。

tolfloat,預設值=1e-6

「arpack」方法的容差。如果 eigen_solver==’dense’ 則不使用。

max_iterint,預設值=100

arpack 解算器的最大迭代次數。

method{‘standard’, ‘hessian’, ‘modified’, ‘ltsa’},預設值=’standard’
standard使用標準的局部線性嵌入演算法。

請參閱參考文獻 [1]

hessian使用 Hessian 特徵圖方法。此方法需要

n_neighbors > n_components * (1 + (n_components + 1) / 2。請參閱參考文獻 [2]

modified使用改良的局部線性嵌入演算法。

請參閱參考文獻 [3]

ltsa使用局部切線空間對齊演算法

請參閱參考文獻 [4]

hessian_tolfloat,預設值=1e-4

Hessian 特徵映射方法的容差。僅當 method == ‘hessian’ 時使用。

modified_tolfloat,預設值=1e-12

改良的 LLE 方法的容差。僅當 method == ‘modified’ 時使用。

random_stateint、RandomState 實例,預設值=None

solver == ‘arpack’ 時,決定隨機數產生器。傳遞一個 int 以便在多次函數呼叫中產生可重複的結果。請參閱詞彙表

n_jobsint 或 None,預設值=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. Nonlinear dimensionality reduction by locally linear embedding. Science 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).

[4]

Zhang, Z. & Zha, H. Principal manifolds and nonlinear dimensionality reduction via tangent space alignment. 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)