局部線性嵌入#

class sklearn.manifold.LocallyLinearEmbedding(*, n_neighbors=5, n_components=2, reg=0.001, eigen_solver='auto', tol=1e-06, max_iter=100, method='standard', hessian_tol=0.0001, modified_tol=1e-12, neighbors_algorithm='auto', random_state=None, n_jobs=None)[原始碼]#

局部線性嵌入法 (Locally Linear Embedding)。

請參閱使用者指南以了解更多資訊。

參數:
n_neighborsint,預設值為 5

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

n_componentsint,預設值為 2

流形的座標數量。

regfloat,預設值為 1e-3

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

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

用於計算特徵向量的求解器。可用的選項如下:

  • 'auto':演算法會嘗試為輸入資料選擇最佳方法。

  • 'arpack':在移位-反轉模式中使用 Arnoldi 迭代。對於此方法,M 可以是密集矩陣、稀疏矩陣或一般線性運算子。

  • 'dense':使用標準密集矩陣運算進行特徵值分解。對於此方法,M 必須是陣列或矩陣類型。對於大型問題,應避免使用此方法。

警告

ARPACK 對於某些問題可能不穩定。最好嘗試幾個隨機種子以檢查結果。

tolfloat,預設值為 1e-6

用於 ‘arpack’ 方法的容差。如果 eigen_solver=='dense',則不使用。

max_iterint,預設值為 100

arpack 求解器的最大迭代次數。如果 eigen_solver=='dense',則不使用。

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' 時使用。

neighbors_algorithm{‘auto’, ‘brute’, ‘kd_tree’, ‘ball_tree’},預設值為 ‘auto’

用於最近鄰搜尋的演算法,傳遞給 NearestNeighbors 實例。

random_stateint,RandomState 實例,預設值為 None

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

n_jobsint 或 None,預設值為 None

要執行的平行作業數量。None 表示 1,除非在 joblib.parallel_backend 環境中。-1 表示使用所有處理器。請參閱詞彙表以了解更多詳細資訊。

屬性:
embedding_array-like,形狀為 [n_samples, n_components]

儲存嵌入向量

reconstruction_error_float

embedding_ 關聯的重建錯誤

n_features_in_int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有全部為字串的特徵名稱時定義。

在 1.0 版本中新增。

nbrs_NearestNeighbors 物件

儲存最近鄰實例,包括 BallTree 或 KDtree(如果適用)。

另請參閱

譜嵌入 (SpectralEmbedding)

用於非線性降維的光譜嵌入法。

T 分布隨機近鄰嵌入 (TSNE)

分散式隨機鄰居嵌入法。

參考文獻

[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 LocallyLinearEmbedding
>>> X, _ = load_digits(return_X_y=True)
>>> X.shape
(1797, 64)
>>> embedding = LocallyLinearEmbedding(n_components=2)
>>> X_transformed = embedding.fit_transform(X[:100])
>>> X_transformed.shape
(100, 2)
fit(X, y=None)[原始碼]#

計算資料 X 的嵌入向量。

參數:
X形狀為 (n_samples, n_features) 的類陣列

訓練集。

y忽略

未使用,此處為符合 API 慣例而存在。

回傳:
self物件

已擬合的 LocallyLinearEmbedding 類別實例。

fit_transform(X, y=None)[原始碼]#

計算資料 X 的嵌入向量並轉換 X。

參數:
X形狀為 (n_samples, n_features) 的類陣列

訓練集。

y忽略

未使用,此處為符合 API 慣例而存在。

回傳:
X_new形狀為 (n_samples, n_components) 的類陣列

回傳實例本身。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

輸出的特徵名稱將會加上小寫的類別名稱作為前綴。例如,如果轉換器輸出 3 個特徵,則輸出的特徵名稱將會是: ["class_name0", "class_name1", "class_name2"]

參數:
input_features字串或 None 的類陣列,預設為 None

僅用於驗證特徵名稱是否與 fit 中看到的名稱相同。

回傳:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看 使用手冊 以了解路由機制如何運作。

回傳:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deep布林值,預設為 True

如果為 True,則會回傳此估計器以及包含的子物件(為估計器)的參數。

回傳:
params字典

參數名稱對應到它們的值。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱 介紹 set_output API 以取得如何使用 API 的範例。

參數:
transform{"default", "pandas", "polars"},預設為 None

設定 transformfit_transform 的輸出。

  • "default": 轉換器的預設輸出格式

  • "pandas": DataFrame 輸出

  • "polars": Polars 輸出

  • None: 轉換設定未變更

在 1.4 版本中新增:新增了 "polars" 選項。

回傳:
self估計器實例

估計器實例。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單的估計器以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個元件。

參數:
**params字典

估計器參數。

回傳:
self估計器實例

估計器實例。

transform(X)[原始碼]#

將新點轉換為嵌入空間。

參數:
X形狀為 (n_samples, n_features) 的類陣列

訓練集。

回傳:
X_new形狀為 (n_samples, n_components) 的 ndarray

回傳實例本身。

註解

由於此方法執行的縮放,不建議將其與非尺度不變的方法(如 SVM)一起使用。