MDS#
- class sklearn.manifold.MDS(n_components=2, *, metric=True, n_init=4, max_iter=300, verbose=0, eps=0.001, n_jobs=None, random_state=None, dissimilarity='euclidean', normalized_stress='auto')[來源]#
多維尺度分析。
請在使用者指南中閱讀更多資訊。
- 參數:
- n_componentsint,預設值=2
沉浸差異性的維度數量。
- metricbool,預設值=True
若為
True
,則執行度量 MDS;否則,執行非度量 MDS。當False
(即非度量 MDS)時,差異性為 0 的值會被視為遺失值。- n_initint,預設值=4
SMACOF 演算法會使用不同初始化方式執行的次數。最終結果將是執行結果中最佳的輸出,由具有最小最終壓力的執行結果決定。
- max_iterint,預設值=300
單次執行 SMACOF 演算法的最大迭代次數。
- verboseint,預設值=0
詳細程度。
- epsfloat,預設值=1e-3
相對於壓力值的收斂容忍度。
eps
的數值應根據是否使用normalized_stress
來分別調整。- n_jobsint,預設值為 None
用於計算的任務數量。如果使用多個初始化 (
n_init
),則演算法的每次執行都會平行計算。None
表示 1,除非在joblib.parallel_backend
環境中。-1
表示使用所有處理器。有關更多詳細資訊,請參閱詞彙表。- random_stateint、RandomState 實例或 None,預設值為 None
決定用於初始化中心的隨機數產生器。傳遞一個整數可以在多次函數呼叫中獲得可重現的結果。請參閱詞彙表。
- dissimilarity{‘euclidean’, ‘precomputed’},預設值為 ‘euclidean’
要使用的相異性度量。
- ‘euclidean’
資料集中點之間的成對歐幾里得距離。
- ‘precomputed’
預先計算的相異性會直接傳遞給
fit
和fit_transform
。
- normalized_stressbool 或 “auto”,預設值為 “auto”
是否使用並返回標準化的壓力值 (Stress-1),而不是預設計算的原始壓力值。僅在非度量 MDS 中支援。
在版本 1.2 中新增。
在 1.4 版本中變更:預設值在 1.4 版本中從
False
變更為"auto"
。
- 屬性:
- embedding_形狀為 (n_samples, n_components) 的 ndarray
儲存資料集在嵌入空間中的位置。
- stress_float
壓力的最終值(所有受限點的差異和距離的平方和)。如果
normalized_stress=True
且metric=False
,則返回 Stress-1。值為 0 表示「完美」擬合,0.025 表示優秀,0.05 表示良好,0.1 表示尚可,0.2 表示差 [1]。- dissimilarity_matrix_形狀為 (n_samples, n_samples) 的 ndarray
點之間的成對相異性。對稱矩陣,
使用自訂相異性矩陣 (將
dissimilarity
設定為 ‘precomputed’ );或使用歐幾里得距離從資料建構相異性矩陣。
- n_features_in_int
在 fit 期間看到的特徵數量。
在版本 0.24 中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅在
X
具有全部為字串的特徵名稱時定義。在版本 1.0 中新增。
- n_iter_int
對應於最佳壓力的迭代次數。
另請參閱
sklearn.decomposition.PCA
主成分分析,一種線性降維方法。
sklearn.decomposition.KernelPCA
使用核心和 PCA 的非線性降維。
TSNE
T 分佈隨機鄰近嵌入。
Isomap
基於等距映射的流形學習。
LocallyLinearEmbedding
使用局部線性嵌入的流形學習。
SpectralEmbedding
用於非線性維度的譜嵌入。
參考文獻
[1]“非度量多維尺度分析:一種數值方法” Kruskal, J. Psychometrika, 29 (1964)
[2]“通過最佳化非度量假設的擬合優度進行多維尺度分析” Kruskal, J. Psychometrika, 29, (1964)
[3]“現代多維尺度分析 - 理論與應用” Borg, I.; Groenen P. Springer Series in Statistics (1997)
範例
>>> from sklearn.datasets import load_digits >>> from sklearn.manifold import MDS >>> X, _ = load_digits(return_X_y=True) >>> X.shape (1797, 64) >>> embedding = MDS(n_components=2, normalized_stress='auto') >>> X_transformed = embedding.fit_transform(X[:100]) >>> X_transformed.shape (100, 2)
有關使用方法的更詳細範例,請參閱 多維尺度分析。
有關流形學習技術的比較,請參閱 流形學習方法比較。
- fit(X, y=None, init=None)[原始碼]#
計算嵌入空間中點的位置。
- 參數:
- X類陣列,形狀為 (n_samples, n_features) 或 (n_samples, n_samples)
輸入資料。如果
dissimilarity=='precomputed'
,則輸入應為相異性矩陣。- y忽略
未使用,為符合 API 慣例而存在。
- init形狀為 (n_samples, n_components) 的 ndarray,預設值為 None
用於初始化 SMACOF 演算法的嵌入起始組態。預設情況下,演算法會以隨機選擇的陣列初始化。
- 傳回值:
- self物件
已擬合的估算器。
- fit_transform(X, y=None, init=None)[原始碼]#
從
X
擬合資料,並返回嵌入的座標。- 參數:
- X類陣列,形狀為 (n_samples, n_features) 或 (n_samples, n_samples)
輸入資料。如果
dissimilarity=='precomputed'
,則輸入應為相異性矩陣。- y忽略
未使用,為符合 API 慣例而存在。
- init形狀為 (n_samples, n_components) 的 ndarray,預設值為 None
用於初始化 SMACOF 演算法的嵌入起始組態。預設情況下,演算法會以隨機選擇的陣列初始化。
- 傳回值:
- X_new形狀為 (n_samples, n_components) 的 ndarray
在新的空間中轉換後的 X。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用者指南,了解路由機制如何運作。
- 傳回值:
- routingMetadataRequest
一個
MetadataRequest
,封裝了路由資訊。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deep布林值,預設值=True
如果為 True,將返回此估算器及其包含的子物件(也是估算器)的參數。
- 傳回值:
- params字典
參數名稱對應到它們的值。
- set_fit_request(*, init: bool | None | str = '$UNCHANGED$') MDS [原始碼]#
請求傳遞給
fit
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制如何運作。每個參數的選項為
True
:請求中繼資料,如果提供,則傳遞給fit
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,元估算器不會將其傳遞給fit
。None
:不請求中繼資料,如果使用者提供,元估算器會引發錯誤。str
:中繼資料應使用此指定的別名(而不是原始名稱)傳遞給元估算器。
預設值(
sklearn.utils.metadata_routing.UNCHANGED
)保留現有的請求。這允許您更改某些參數的請求,而不是其他參數。在 1.3 版本中新增。
注意
此方法僅在此估算器用作元估算器的子估算器時才相關,例如在
Pipeline
中使用。否則,它不會有任何影響。- 參數:
- init字串、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
fit
中init
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。