# procrustes.generalized

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.

Parameters
• 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.

Returns

• 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.

Notes

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.