斯马科夫#
- 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算法可以通过以下步骤总结:
随机或不随机设置初始启动配置。
计算压力
计算古特曼变换
迭代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
, andmetric=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...)