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’

    預先計算的相異性會直接傳遞給 fitfit_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=Truemetric=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

fitinit 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

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

設定此估算器的參數。

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

參數:
**params字典

估算器參數。

傳回值:
self估算器實例

估算器實例。