class_docstr: Standard GMM.
  
  this class contains the following members
  k (int): the number of components in the mixture
  dim (int): is the dimension of the data
  prec_type = 'full' (string) is the parameterization
            of the precisions/covariance matrices:
            either 'full' or 'diagonal'.
  means: array of shape (k,dim):
        all the means (mean parameters) of the components
  precisions: array of shape (k,dim,dim):
             the precisions (inverse covariance matrix) of the components
  weights: array of shape(k): weights of the mixture
  
  fixme
  -----
  no copy method
class_docstr_tok: ["Standard","GMM",".","this","class","contains","the","following","members","k","(","int",")",":","the","number","of","components","in","the","mixture","dim","(","int",")",":","is","the","dimension","of","the","data","prec_type","=","'full","'","(","string",")","is","the","parameterization","of","the","precisions\/covariance","matrices",":","either","'full","'","or","'diagonal","'",".","means",":","array","of","shape","(","k",",","dim",")",":","all","the","means","(","mean","parameters",")","of","the","components","precisions",":","array","of","shape","(","k",",","dim",",","dim",")",":","the","precisions","(","inverse","covariance","matrix",")","of","the","components","weights",":","array","of","shape","(","k",")",":","weights","of","the","mixture","fixme","--","--","-","no","copy","method"]
docstr: Initialize the structure, at least with the dimensions of the problem
  
  Parameters
  ----------
  k (int) the number of classes of the model
  dim (int) the dimension of the problem
  prec_type = 'full' : coavriance:precision parameterization
            (diagonal 'diag' or full 'full').
  means = None: array of shape (self.k,self.dim)
  precisions = None:  array of shape (self.k,self.dim,self.dim)
             or (self.k, self.dim)
  weights=None: array of shape (self.k)
  
  By default, means, precision and weights are set as
  zeros()
  eye()
  1/k ones()
  with the correct dimensions
docstr_tok: ["Initialize","the","structure",",","at","least","with","the","dimensions","of","the","problem","Parameters","--","--","--","--","--","k","(","int",")","the","number","of","classes","of","the","model","dim","(","int",")","the","dimension","of","the","problem","prec_type","=","'full","'",":","coavriance",":","precision","parameterization","(","diagonal","'diag","'","or","full","'full","'",")",".","means","=","None",":","array","of","shape","(","self.k",",","self.dim",")","precisions","=","None",":","array","of","shape","(","self.k",",","self.dim",",","self.dim",")","or","(","self.k",",","self.dim",")","weights=None",":","array","of","shape","(","self.k",")","By","default",",","means",",","precision","and","weights","are","set","as","zeros","(",")","eye","(",")","1\/k","ones","(",")","with","the","correct","dimensions"]
code: def __init__(
      self,
      k=1,
      dim=1,
      prec_type="full",
      means=None,
      precisions=None,
      weights=None,
  ):
      """
      Initialize the structure, at least with the dimensions of the problem
  
      Parameters
      ----------
      k (int) the number of classes of the model
      dim (int) the dimension of the problem
      prec_type = 'full' : coavriance:precision parameterization
                (diagonal 'diag' or full 'full').
      means = None: array of shape (self.k,self.dim)
      precisions = None:  array of shape (self.k,self.dim,self.dim)
                 or (self.k, self.dim)
      weights=None: array of shape (self.k)
  
      By default, means, precision and weights are set as
      zeros()
      eye()
      1/k ones()
      with the correct dimensions
      """
      self.k = k
      self.dim = dim
      self.prec_type = prec_type
      self.means = means
      self.precisions = precisions
      self.weights = weights
  
      if self.means is None:
          self.means = np.zeros((self.k, self.dim))
  
      if self.precisions is None:
          if prec_type == "full":
              prec = np.reshape(
                  np.eye(self.dim), (1, self.dim, self.dim)
              )
              self.precisions = np.repeat(prec, self.k, 0)
          else:
              self.precisions = np.ones((self.k, self.dim))
  
      if self.weights is None:
          self.weights = np.ones(self.k) * 1.0 / self.k
  
imports: import numpy
  from scipy.linalg import eigvalsh
label_desc: Use image node_id 1 to create a new GMM object  with example: obj = GMM(k, dim, prec_type, means, precisions, weights)