等距映射#

class sklearn.manifold.Isomap(*, n_neighbors=5, radius=None, n_components=2, eigen_solver='auto', tol=0, max_iter=None, path_method='auto', neighbors_algorithm='auto', n_jobs=None, metric='minkowski', p=2, metric_params=None)[原始碼]#

Isomap 嵌入。

透過等距映射進行非線性降維。

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

參數:
n_neighborsint 或 None,預設值=5

每個點要考慮的鄰居數量。如果 n_neighbors 是一個整數,則 radius 必須為 None

radiusfloat 或 None,預設值=None

要回傳的鄰居的距離上限。如果 radius 是一個浮點數,則 n_neighbors 必須設定為 None

於 1.1 版新增。

n_componentsint,預設值=2

流形的座標數量。

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

‘auto’:嘗試為給定的問題選擇最有效率的求解器。

‘arpack’:使用 Arnoldi 分解來尋找特徵值和特徵向量。

‘dense’:使用直接求解器(即 LAPACK)進行特徵值分解。

tolfloat,預設值=0

傳遞給 arpack 或 lobpcg 的收斂容差。如果 eigen_solver == ‘dense’,則不使用。

max_iterint,預設值=None

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

path_method{‘auto’, ‘FW’, ‘D’},預設值=’auto’

在尋找最短路徑時要使用的方法。

‘auto’:嘗試自動選擇最佳演算法。

‘FW’:Floyd-Warshall 演算法。

‘D’:Dijkstra 演算法。

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

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

n_jobsint 或 None,預設值=None

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

metricstr 或可呼叫物件,預設值=”minkowski”

在計算特徵陣列中實例之間的距離時要使用的度量。如果 metric 是一個字串或可呼叫物件,則它必須是 sklearn.metrics.pairwise_distances 其度量參數所允許的選項之一。如果 metric 是 “precomputed”,則假設 X 是一個距離矩陣,並且必須是正方形。X 可能是一個詞彙表

於 0.22 版新增。

pfloat,預設值=2

來自 sklearn.metrics.pairwise.pairwise_distances 的 Minkowski 度量的參數。當 p = 1 時,這相當於使用 manhattan_distance (l1);而對於 p = 2,則為 euclidean_distance (l2)。對於任意 p,則使用 minkowski_distance (l_p)。

於 0.22 版新增。

metric_paramsdict,預設值=None

用於度量函數的額外關鍵字參數。

於 0.22 版新增。

屬性:
embedding_類陣列,形狀為 (n_samples, n_components)

儲存嵌入向量。

kernel_pca_物件

用於實作嵌入的 KernelPCA 物件。

nbrs_sklearn.neighbors.NearestNeighbors 實例

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

dist_matrix_類陣列,形狀為 (n_samples, n_samples)

儲存訓練資料的測地線距離矩陣。

n_features_in_int

fit 期間看到的特徵數量。

於 0.24 版新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 的特徵名稱都是字串時才定義。

於 1.0 版新增。

另請參閱

sklearn.decomposition.PCA

主成分分析,是一種線性降維方法。

sklearn.decomposition.KernelPCA

使用核函數和 PCA 進行非線性降維。

多維尺度分析 (MDS)

使用多維縮放的流形學習。

t-分布鄰域嵌入演算法 (TSNE)

T 分布隨機鄰近嵌入。

局部線性嵌入 (LocallyLinearEmbedding)

使用局部線性嵌入的流形學習。

譜嵌入 (SpectralEmbedding)

用於非線性維度的譜嵌入。

參考文獻

[1]

Tenenbaum, J.B.; De Silva, V.; & Langford, J.C. A global geometric framework for nonlinear dimensionality reduction. Science 290 (5500)

範例

>>> from sklearn.datasets import load_digits
>>> from sklearn.manifold import Isomap
>>> X, _ = load_digits(return_X_y=True)
>>> X.shape
(1797, 64)
>>> embedding = Isomap(n_components=2)
>>> X_transformed = embedding.fit_transform(X[:100])
>>> X_transformed.shape
(100, 2)
fit(X, y=None)[原始碼]#

計算資料 X 的嵌入向量。

參數:
X{類陣列、稀疏矩陣、BallTree、KDTree、NearestNeighbors}

樣本資料,形狀為 (n_samples, n_features),以 NumPy 陣列、稀疏矩陣、預先計算的樹狀結構或 NearestNeighbors 物件的形式呈現。

y忽略

不使用,依慣例為了 API 的一致性而存在。

回傳:
self物件

回傳一個已配適的 self 實例。

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

從 X 中的資料配適模型並轉換 X。

參數:
X{類陣列, 稀疏矩陣, BallTree, KDTree}

訓練向量,其中 n_samples 是樣本數,而 n_features 是特徵數。

y忽略

不使用,依慣例為了 API 的一致性而存在。

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

在新的空間中轉換的 X。

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字典

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

reconstruction_error()[原始碼]#

計算嵌入的重建誤差。

回傳:
reconstruction_error浮點數

重建誤差。

備註

Isomap 嵌入的成本函數為

E = frobenius_norm[K(D) - K(D_fit)] / n_samples

其中 D 是輸入資料 X 的距離矩陣,D_fit 是輸出嵌入 X_fit 的距離矩陣,而 K 是 Isomap 核心

K(D) = -0.5 * (I - 1/n_samples) * D^2 * (I - 1/n_samples)

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。

此操作的實作方式是將點 X 連接到訓練資料的測地距離圖。首先,在訓練資料中找到 X 的 n_neighbors 個最近鄰居,並從這些鄰居計算 X 中每個點到訓練資料中每個點的最短測地距離,以便建構核心(kernel)。X 的嵌入是將此核心投影到訓練集的嵌入向量上。

參數:
X{array-like, 稀疏矩陣}, 形狀 (n_queries, n_features)

如果 neighbors_algorithm='precomputed',則假設 X 為距離矩陣或形狀為 (n_queries, n_samples_fit) 的稀疏圖。

回傳:
X_newarray-like, 形狀 (n_queries, n_components)

在新的空間中轉換的 X。