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’ (预计算)
预计算的不相似度直接传递给
fit
和fit_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
fit
中init
参数的元数据路由。
- 返回:
- self对象
更新后的对象。