多维缩放#
- 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')[source]#
多维缩放。
更多信息请参见用户指南。
- 参数:
- n_componentsint, default=2
将差异嵌入的维度数。
- metricbool, default=True
如果为
True
,则执行度量MDS;否则,执行非度量MDS。当为False
(即非度量MDS)时,差异为0被视为缺失值。- n_initint, default=4
使用不同初始化运行SMACOF算法的次数。最终结果将是运行中最好的输出,由最终应力最小的运行决定。
- max_iterint,默认为300
单次运行SMACOF算法的最大迭代次数。
- verboseint,默认为0
详细程度。
- epsfloat,默认为1e-3
声明收敛时关于应力的相对容差。
eps
的值应根据是否使用normalized_stress
单独调整。- n_jobsint,默认为None
用于计算的作业数。如果使用多个初始化(
n_init
),则算法的每次运行都将并行计算。除非在
joblib.parallel_backend
上下文中,None
表示1。-1
表示使用所有处理器。有关更多详细信息,请参见词汇表。- random_stateint,RandomState 实例或 None,默认为 None
确定用于初始化中心的随机数生成器。传递一个整数以在多次函数调用中获得可重复的结果。请参见词汇表。
- dissimilarity{'euclidean', 'precomputed'},默认为'euclidean'
使用的相异性度量。
- ‘euclidean’
数据集里点之间的成对欧几里得距离。
- ‘precomputed’
预先计算的相异性直接传递给
fit
和fit_transform
。
- normalized_stressbool 或 “auto” ,默认为“auto”
是否使用并返回归一化应力值(Stress-1),而不是默认计算的原始应力。仅在非度量MDS中受支持。
1.2 版本中新增。
1.4 版本中的变更: 1.4 版本中的默认值从
False
更改为"auto"
。
- 属性:
- embedding_shape 为 (n_samples, n_components) 的 ndarray
存储数据集中在嵌入空间中的位置。
- stress_float
应力的最终值(所有约束点的差异和距离的平方和)。如果
normalized_stress=True
且metric=False
,则返回 Stress-1。值为 0 表示“完美”拟合,0.025 表示优秀,0.05 表示良好,0.1 表示尚可,0.2 表示差[1]。- dissimilarity_matrix_shape 为 (n_samples, n_samples) 的 ndarray
点之间的成对相异性。对称矩阵,
或者通过将
dissimilarity
设置为 'precomputed' 来使用自定义相异性矩阵;或者使用欧几里得距离从数据构建相异性矩阵。
- n_features_in_int
在拟合期间看到的特征数量。
0.24 版本中新增。
- feature_names_in_shape 为 (
n_features_in_
,) 的 ndarray 在拟合期间看到的特征名称。仅当
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 统计系列 (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)[source]#
计算点在嵌入空间中的位置。
- 参数:
- Xshape 为 (n_samples, n_features) 或 (n_samples, n_samples) 的 array-like
输入数据。如果
dissimilarity=='precomputed'
,则输入应为相异性矩阵。- y忽略
未使用,根据约定存在以保持 API 一致性。
- initshape 为 (n_samples, n_components) 的 ndarray,默认为 None
嵌入的起始配置,用于初始化 SMACOF 算法。默认情况下,算法使用随机选择的数组进行初始化。
- 返回值:
- selfobject
已拟合的估计器。
- fit_transform(X, y=None, init=None)[source]#
拟合来自
X
的数据,并返回嵌入坐标。- 参数:
- Xshape 为 (n_samples, n_features) 或 (n_samples, n_samples) 的 array-like
输入数据。如果
dissimilarity=='precomputed'
,则输入应为相异性矩阵。- y忽略
未使用,根据约定存在以保持 API 一致性。
- initshape 为 (n_samples, n_components) 的 ndarray,默认为 None
嵌入的起始配置,用于初始化 SMACOF 算法。默认情况下,算法使用随机选择的数组进行初始化。
- 返回值:
- X_newndarray of shape (n_samples, n_components)
在新的空间中转换后的X。
- 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 版中添加。
注意
仅当此估计器用作元估计器的子估计器时(例如,在
Pipeline
内部使用),此方法才相关。否则,它无效。- 参数:
- initstr, True, False, 或 None, default=sklearn.utils.metadata_routing.UNCHANGED
fit
中init
参数的元数据路由。
- 返回值:
- selfobject
更新后的对象。