MDS#

class sklearn.manifold.MDS(n_components=2, *, metric=True, n_init='warn', max_iter=300, verbose=0, eps=1e-06, n_jobs=None, random_state=None, dissimilarity='euclidean', normalized_stress='auto')[source]#

多维缩放。

用户指南中阅读更多内容。

参数:
n_components整型, 默认值=2

嵌入不相似度的维度数量。

metric布尔型, 默认值=True

如果为 True,执行度量 MDS;否则,执行非度量 MDS。当为 False(即非度量 MDS)时,不相似度为 0 的值被视为缺失值。

n_init整型, 默认值=4

SMACOF 算法将使用不同初始化运行的次数。最终结果将是所有运行中最佳的输出,由最终压力最小的运行决定。

版本 1.9 中的变更: n_init 的默认值将在版本 1.9 中从 4 更改为 1。

max_iter整型, 默认值=300

SMACOF 算法单次运行的最大迭代次数。

verbose整型, 默认值=0

详细程度。

eps浮点型, 默认值=1e-6

关于压力(通过嵌入距离平方和归一化)的容差,达到此容差即宣布收敛。

版本 1.7 中的变更: eps 的默认值已从 1e-3 更改为 1e-6,这是由于收敛准则计算中的一个错误修复。

n_jobs整型, 默认值=None

用于计算的作业数量。如果使用多个初始化 (n_init),则算法的每次运行都将并行计算。

None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。有关更多详细信息,请参见术语表

random_state整型, RandomState 实例或 None, 默认值=None

确定用于初始化中心的随机数生成器。传入一个整型值可确保在多次函数调用中获得可重现的结果。参见术语表

dissimilarity{'euclidean', 'precomputed'}, 默认值='euclidean'

要使用的不相似度度量

  • ‘euclidean’ (欧几里得)

    数据集中点之间的成对欧几里得距离。

  • ‘precomputed’ (预计算)

    预计算的不相似度直接传递给 fitfit_transform

normalized_stress布尔型或“auto” 默认值=“auto”

是否返回归一化压力值(Stress-1)而不是原始压力。默认情况下,度量 MDS 返回原始压力,而非度量 MDS 返回归一化压力。

版本 1.2 中新增。

版本 1.4 中的变更: 默认值在版本 1.4 中从 False 更改为 "auto"

版本 1.7 中的变更: 度量 MDS 也支持归一化压力了。

属性:
embedding_形状为 (n_samples, n_components) 的 ndarray

存储数据集在嵌入空间中的位置。

stress_浮点型

压力的最终值(所有受约束点的差异平方距离和距离之和)。如果 normalized_stress=True,则返回 Stress-1。值为 0 表示“完美”拟合,0.025 表示极佳,0.05 表示良好,0.1 表示一般,0.2 表示差 [1]

dissimilarity_matrix_形状为 (n_samples, n_samples) 的 ndarray

点之间的成对不相似度。对称矩阵,它

  • 通过将 dissimilarity 设置为 ‘precomputed’ 来使用自定义不相似度矩阵;

  • 或使用欧几里得距离从数据构建不相似度矩阵。

n_features_in_整型

拟合期间看到的特征数量。

版本 0.24 中新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合期间看到的特征名称。仅当 X 的所有特征名称均为字符串时才定义。

版本 1.0 中新增。

n_iter_整型

与最佳压力对应的迭代次数。

另请参见

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, n_init=1)
>>> X_transformed = embedding.fit_transform(X[:100])
>>> X_transformed.shape
(100, 2)

有关更详细的用法示例,请参见多维缩放

有关流形学习技术的比较,请参见流形学习方法比较

fit(X, y=None, init=None)[source]#

计算点在嵌入空间中的位置。

参数:
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)[source]#

拟合来自 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()[source]#

获取此对象的元数据路由。

请查看用户指南,了解路由机制的工作原理。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deep布尔型, 默认值=True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
params字典

参数名称及其对应值的映射。

set_fit_request(*, init: bool | None | str = '$UNCHANGED$') MDS[source]#

请求传递给 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)[source]#

设置此估计器的参数。

此方法适用于简单估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,因此可以更新嵌套对象的每个组件。

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。