局部線性嵌入#
- 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’
- 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)