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'
预计算的相异度直接传递给
fit和fit_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的作用。对True和False的支持将在 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的非线性降维。
TSNET 分布随机邻居嵌入。
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
fit中init参数的元数据路由。
- 返回:
- selfobject
更新后的对象。