等距映射#
- 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
設定
transform
和fit_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。