斯马科夫#

sklearn.manifold.smacof(dissimilarities, *, metric=True, n_components=2, init=None, n_init=8, n_jobs=None, max_iter=300, verbose=0, eps=0.001, random_state=None, return_n_iter=False, normalized_stress='auto')[源代码]#

使用SMACOF算法计算多维缩放。

SMACOF(通过修改函数进行缩放)算法是一种多维缩放算法,其最小化目标函数( stress )使用多数化技术。压力优先化,也称为古特曼变换,保证压力的单调收敛,并且比梯度下降等传统技术更强大。

用于指标BDS的SMACOF算法可以通过以下步骤总结:

  1. 随机或不随机设置初始启动配置。

  2. 计算压力

  3. 计算古特曼变换

  4. 迭代2和3直至收敛。

The nonmetric algorithm adds a monotonic regression step before computing the stress.

参数:
dissimilaritiesarray-like of shape(n_samples,n_samples)

两点之间的成对差异。必须是对称的。

metric布尔,默认=True

计算指标或非指标SMACOF算法。当 False (i.e.非度量的BDS),与0的差异被视为缺失值。

n_componentsint,默认=2

将差异浸入其中的维度数量。如果 init 提供了数组,该选项将被覆盖,并且 init 用于确定嵌入空间的维度。

init形状类似阵列(n_samples,n_components),默认=无

开始嵌入配置以初始化算法。默认情况下,该算法使用随机选择的数组初始化。

n_initint, default=8

SMACOF算法将在不同初始化下运行的次数。最终结果将是运行的最佳输出,由最终压力最小的运行确定。如果 init 则会覆盖此选项并执行单次运行。

n_jobsint,默认=无

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

None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

max_iterint,默认=300

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

verboseint,默认=0

冗长的程度。

eps浮点数,默认值= 1 e-3

相对于声明收敛的应力的相对公差。的价值 eps 应根据是否单独调整 normalized_stress 市.我们

random_stateint,RandomState实例或无,默认=无

确定用于初始化中心的随机数生成器。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

return_n_iter布尔,默认=假

是否返回迭代次数。

normalized_stressbool或“Auto”默认=“Auto”

是否使用并返回标准压力值(Stress-1)而不是默认计算的原始压力。仅支持非指标型的BDS。

Added in version 1.2.

在 1.4 版本发生变更: 默认值从 False"auto" 在1.4版本中。

返回:
X形状的nd数组(n_samples,n_components)

a中点的坐标 n_components - 空间。

stress浮子

The final value of the stress (sum of squared distance of the disparities and the distances for all constrained points). If normalized_stress=True, and metric=False returns Stress-1. A value of 0 indicates "perfect" fit, 0.025 excellent, 0.05 good, 0.1 fair, and 0.2 poor [1].

n_iterint

对应于最佳应力的迭代次数。只有在以下情况下才返回 return_n_iter 设置为 True .

引用

[1]

“非度量多维缩放:一种数值方法”Kruskal,J. Psychmetrika,29(1964)

[2]

“通过优化非度量假设的契合度进行多维缩放”Kruskal,J. Psychmetrika,29,(1964)

[3]

“现代多维标度-理论与应用”博格,I; Groenen P. Springer统计学系列(1997)

示例

>>> import numpy as np
>>> from sklearn.manifold import smacof
>>> from sklearn.metrics import euclidean_distances
>>> X = np.array([[0, 1, 2], [1, 0, 3],[2, 3, 0]])
>>> dissimilarities = euclidean_distances(X)
>>> mds_result, stress = smacof(dissimilarities, n_components=2, random_state=42)
>>> mds_result
array([[ 0.05... -1.07... ],
       [ 1.74..., -0.75...],
       [-1.79...,  1.83...]])
>>> stress
np.float64(0.0012...)