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: Estimation of the model given a dataset x
  
  Parameters
  ----------
  x array of shape (n_samples,dim)
    the data from which the model is estimated
  niter=100: maximal number of iterations in the estimation process
  delta = 1.e-4: increment of data likelihood at which
        convergence is declared
  verbose=0: verbosity mode
  
  Returns
  -------
  bic : an asymptotic approximation of model evidence
docstr_tok: ["Estimation","of","the","model","given","a","dataset","x","Parameters","--","--","--","--","--","x","array","of","shape","(","n_samples",",","dim",")","the","data","from","which","the","model","is","estimated","niter=100",":","maximal","number","of","iterations","in","the","estimation","process","delta","=","1.e-4",":","increment","of","data","likelihood","at","which","convergence","is","declared","verbose=0",":","verbosity","mode","Returns","--","--","--","-","bic",":","an","asymptotic","approximation","of","model","evidence"]
code: def estimate(self, x, niter=100, delta=1.0e-4, verbose=0):
      """Estimation of the model given a dataset x
  
      Parameters
      ----------
      x array of shape (n_samples,dim)
        the data from which the model is estimated
      niter=100: maximal number of iterations in the estimation process
      delta = 1.e-4: increment of data likelihood at which
            convergence is declared
      verbose=0: verbosity mode
  
      Returns
      -------
      bic : an asymptotic approximation of model evidence
      """
      # check that the data is OK
      x = self.check_x(x)
  
      # alternation of E/M step until convergence
      tiny = 1.0e-15
      av_ll_old = -np.inf
      for i in range(niter):
          l = self._Estep(x)
          av_ll = np.mean(np.log(np.maximum(np.sum(l, 1), tiny)))
          if av_ll < av_ll_old + delta:
              if verbose:
                  print(
                      "iteration:",
                      i,
                      "log-likelihood:",
                      av_ll,
                      "old value:",
                      av_ll_old,
                  )
              break
          else:
              av_ll_old = av_ll
          if verbose:
              print(i, av_ll, self.bic(l))
          self._Mstep(x, l)
  
      return self.bic(l)
  
imports: import numpy
  from scipy.linalg import eigvalsh
label_desc: Use image node_id 19 for calling the GMM obj's underlying member method code with example usage: obj.estimate(x, niter, delta, verbose) and returns: self