def _smacof_single(dissimilarities, weights, init=None, anchors=None, n_components=2, maxitr=300, eps=1e-6, random_state=None):
# Pre-compute the weights of the Guttman transform
V = _gt_weights(weights)
if random_state is None:
random_state = np.random.RandomState()
# Initial positions are random by default
if init is None:
init = random_state.randn(dissimilarities.shape[0]-anchors.shape[0], n_components)
X = init
Sprev = _stress(dissimilarities, weights, np.vstack([X, anchors])) # Stress at previous iteration
for itr in range(maxitr):
X = _guttman_transform(dissimilarities, weights, X, anchors, V)
S = _stress(dissimilarities, weights, np.vstack([X, anchors]))
if np.abs(S - Sprev) < eps:
break
Sprev = S
return X, Sprev
mds_with_anchors.py 文件源码
python
阅读 23
收藏 0
点赞 0
评论 0
评论列表
文章目录