class_docstr: Generalized Procrustes Analysis (GPA).
  
  Algorithm outline:
  
  1. Choose a reference shape.
  2. Apply Procrustes Analysis to superimpose all shapes to the reference shape.
  3. Compute the mean shape of the superimposed shapes.
  4. Repeat steps 2 and 3 until convergence.
  
  Parameters
  ----------
  max_iter
      The maximum number of Procrustes analysis iterations.
  tol
      The tolerance for the optimization; stops if the Procrustes distance decreases by less or
      equal to `tol` between iterations.
  init
      Method for initializing reference shape.
      - 'random' : choose reference shape from shape list
      - 'mean' : initialize reference shape as mean of shape list
  scale
      Whether to compute transformations with a scale component.
  copy
      Whether to copy data or perform the computations inplace. If False, data passed to fit are
      overwritten and running fit(X).transform(X) will not yield the expected results,
      use fit_transform(X) instead.
  check_input
      Whether to check the consistency of the inputs.
  random_state
      Determines random number generation for initialization when `init=='random'`.
  
  References
  ----------
  https://wikipedia.org/wiki/Generalized_Procrustes_analysis
  https://medium.com/@olga_kravchenko/generalized-procrustes-analysis-with-python-numpy-c571e8e8a421
class_docstr_tok: ["Generalized","Procrustes","Analysis","(","GPA",")",".","Algorithm","outline",":","1",".","Choose","a","reference","shape",".","2",".","Apply","Procrustes","Analysis","to","superimpose","all","shapes","to","the","reference","shape",".","3",".","Compute","the","mean","shape","of","the","superimposed","shapes",".","4",".","Repeat","steps","2","and","3","until","convergence",".","Parameters","--","--","--","--","--","max_iter","The","maximum","number","of","Procrustes","analysis","iterations",".","tol","The","tolerance","for","the","optimization",";","stops","if","the","Procrustes","distance","decreases","by","less","or","equal","to","`","tol","`","between","iterations",".","init","Method","for","initializing","reference","shape",".","-","'random","'",":","choose","reference","shape","from","shape","list","-","'mean","'",":","initialize","reference","shape","as","mean","of","shape","list","scale","Whether","to","compute","transformations","with","a","scale","component",".","copy","Whether","to","copy","data","or","perform","the","computations","inplace",".","If","False",",","data","passed","to","fit","are","overwritten","and","running","fit","(","X",")",".transform","(","X",")","will","not","yield","the","expected","results",",","use","fit_transform","(","X",")","instead",".","check_input","Whether","to","check","the","consistency","of","the","inputs",".","random_state","Determines","random","number","generation","for","initialization","when","`","init=='random","'","`",".","References","--","--","--","--","--","https",":","\/\/wikipedia.org\/wiki\/Generalized_Procrustes_analysis","https",":","\/\/medium.com\/","@","olga_kravchenko\/generalized-procrustes-analysis-with-python-numpy-c571e8e8a421"]
docstr: Returns the final reference shape.
docstr_tok: ["Returns","the","final","reference","shape","."]
code: def reference_shape(self):
      """Returns the final reference shape."""
      self._check_is_fitted()
      return self._reference_shape
  
file_path: prince/prince/gpa.py
imports: from __future__ import annotations
  import numpy
  from scipy.linalg import orthogonal_procrustes
  from scipy.spatial import procrustes
  from sklearn import base
  from sklearn import utils
  from prince import utils
label_desc: Use image node_id 7 for calling the GPA obj's underlying member method code with example usage: obj.reference_shape() and returns: self