MDS#

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

多维缩放。

用户指南中阅读更多信息。

参数:
n_componentsint, default=2

嵌入相异度的维度数量。

metric_mdsbool, 默认=True

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

在 1.8 版本中更改: 参数metric已重命名为metric_mds

n_initint, 默认=4

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

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

init{'random', 'classical_mds'}, 默认='random'

初始化方法。如果为random,则使用随机初始化。如果为classical_mds,则运行经典MDS并将其用作MDS的初始化(在这种情况下,n_init的值将被忽略)。

1.8 版本新增。

在 1.10 版本中更改: init的默认值将更改为classical_mds

max_iterint, default=300

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

verboseint, default=0

详细程度级别。

epsfloat, 默认=1e-6

关于应力(按平方嵌入距离之和归一化)的容差,在此容差下声明收敛。

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

n_jobsint, default=None

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

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

random_stateint, RandomState instance or None, default=None

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

dissimilarity{'euclidean', 'precomputed'}

要使用的相异度度量

  • 'euclidean'

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

  • 'precomputed'

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

自 1.8 版本废弃: dissimilarity在 1.8 中重命名为metric,并将在 1.10 中移除。

metricstr or callable, default=’euclidean’

用于相异度计算的度量。默认为“euclidean”。

如果度量是字符串,则它必须是scipy.spatial.distance.pdist的度量参数允许的选项之一,或sklearn.metrics.pairwise.distance_metrics中列出的度量之一

如果度量为“precomputed”,则假定X是距离矩阵,并且在拟合期间必须是方形的。

如果 metric 是可调用函数,它接受表示 1D 向量的两个数组作为输入,并且必须返回一个值来指示这些向量之间的距离。这适用于 Scipy 的度量,但效率低于将度量名称作为字符串传递。

在 1.8 版本中更改: 在 1.8 之前,metric=True/False用于选择度量/非度量MDS,现在这是metric_mds的作用。对TrueFalse的支持将在 1.10 版本中取消,请改用metric_mds

metric_paramsdict, default=None

相异度计算的其他关键字参数。

1.8 版本新增。

normalized_stressbool 或 “auto” 默认值=”auto”

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

1.2 版本新增。

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

在 1.7 版本中更改: 度量MDS现在也支持归一化应力。

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

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

stress_float

应力的最终值(所有受约束点的差异和距离的平方和)。如果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_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

n_iter_int

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

另请参阅

sklearn.decomposition.PCA

主成分分析,是一种线性降维方法。

sklearn.decomposition.KernelPCA

使用核函数和PCA的非线性降维。

TSNE

T 分布随机邻居嵌入。

Isomap

基于等距映射的流形学习。

LocallyLinearEmbedding

使用局部线性嵌入的流形学习。

SpectralEmbedding

用于非线性降维的谱嵌入。

References

[1]

“Nonmetric multidimensional scaling: a numerical method” Kruskal, J. Psychometrika, 29 (1964)

[2]

“Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis” Kruskal, J. Psychometrika, 29, (1964)

[3]

“Modern Multidimensional Scaling - Theory and Applications” 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, init="random")
>>> 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) 的类数组对象

输入数据。如果metric=='precomputed',输入应该是相异度矩阵。

y被忽略

未使用,按照惯例为保持 API 一致性而存在。

init形状为 (n_samples, n_components) 的 ndarray, 默认=None

嵌入的初始配置,用于初始化SMACOF算法。默认情况下,算法使用随机选择的数组进行初始化。

返回:
selfobject

拟合的估计器。

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

拟合来自X的数据,并返回嵌入坐标。

参数:
X形状为 (n_samples, n_features) 或 (n_samples, n_samples) 的类数组对象

输入数据。如果metric=='precomputed',输入应该是相异度矩阵。

y被忽略

未使用,按照惯例为保持 API 一致性而存在。

init形状为 (n_samples, n_components) 的 ndarray, 默认=None

嵌入的初始配置,用于初始化SMACOF算法。默认情况下,算法使用随机选择的数组进行初始化。

返回:
X_newndarray of shape (n_samples, n_components)

X transformed in the new space.

get_metadata_routing()[source]#

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

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

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 中新增。

参数:
initstr, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED

fitinit参数的元数据路由。

返回:
selfobject

更新后的对象。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。