Generalized Procrustes Module.

procrustes.generalized.generalized(array_list: List[numpy.ndarray], ref: Optional[numpy.ndarray] = None, tol: float = 1e-07, n_iter: int = 200, check_finite: bool = True) Tuple[List[numpy.ndarray], float][source]

Generalized Procrustes Analysis.

  • array_list (List) -- The list of 2D-array which is going to be transformed.

  • ref (ndarray, optional) -- The reference array to initialize the first iteration. If None, the first array in array_list will be used.

  • tol (float, optional) -- Tolerance value to stop the iterations.

  • n_iter (int, optional) -- Number of total iterations.

  • check_finite (bool, optional) -- If true, convert the input to an array, checking for NaNs or Infs.


  • array_aligned (List) -- A list of transformed arrays with generalized Procrustes analysis.

  • new_distance_gpa (float) -- The distance for matching all the transformed arrays with generalized Procrustes analysis.


Given a set of matrices, \(\mathbf{A}_1, \mathbf{A}_2, \cdots, \mathbf{A}_k\) with \(k > 2\), the objective is to minimize in order to superimpose pairs of matrices.

\[\min \quad = \sum_{i<j}^{j} {\left\| \mathbf{A}_i \mathbf{T}_i - \mathbf{A}_j \mathbf{T}_j \right\| }^2\]

This function implements the Equation (20) and the corresponding algorithm in Gower's paper.