class_docstr: Variational Inference for the Gaussian Mixture Model
  
  .. deprecated:: 0.18
      This class will be removed in 0.20.
      Use :class:`sklearn.mixture.BayesianGaussianMixture` with parameter
      ``weight_concentration_prior_type='dirichlet_distribution'`` instead.
  
  Variational inference for a Gaussian mixture model probability
  distribution. This class allows for easy and efficient inference
  of an approximate posterior distribution over the parameters of a
  Gaussian mixture model with a fixed number of components.
  
  Initialization is with normally-distributed means and identity
  covariance, for proper convergence.
  
  Read more in the :ref:`User Guide <vbgmm>`.
  
  Parameters
  ----------
  n_components: int, default 1
      Number of mixture components.
  
  covariance_type: string, default 'diag'
      String describing the type of covariance parameters to
      use.  Must be one of 'spherical', 'tied', 'diag', 'full'.
  
  alpha: float, default 1
      Real number representing the concentration parameter of
      the dirichlet distribution. Intuitively, the higher the
      value of alpha the more likely the variational mixture of
      Gaussians model will use all components it can.
  
  tol : float, default 1e-3
      Convergence threshold.
  
  n_iter : int, default 10
      Maximum number of iterations to perform before convergence.
  
  params : string, default 'wmc'
      Controls which parameters are updated in the training
      process.  Can contain any combination of 'w' for weights,
      'm' for means, and 'c' for covars.
  
  init_params : string, default 'wmc'
      Controls which parameters are updated in the initialization
      process.  Can contain any combination of 'w' for weights,
      'm' for means, and 'c' for covars.  Defaults to 'wmc'.
  
  verbose : int, default 0
      Controls output verbosity.
  
  Attributes
  ----------
  covariance_type : string
      String describing the type of covariance parameters used by
      the DP-GMM.  Must be one of 'spherical', 'tied', 'diag', 'full'.
  
  n_features : int
      Dimensionality of the Gaussians.
  
  n_components : int (read-only)
      Number of mixture components.
  
  weights_ : array, shape (`n_components`,)
      Mixing weights for each mixture component.
  
  means_ : array, shape (`n_components`, `n_features`)
      Mean parameters for each mixture component.
  
  precs_ : array
      Precision (inverse covariance) parameters for each mixture
      component.  The shape depends on `covariance_type`::
  
          (`n_components`, 'n_features')                if 'spherical',
          (`n_features`, `n_features`)                  if 'tied',
          (`n_components`, `n_features`)                if 'diag',
          (`n_components`, `n_features`, `n_features`)  if 'full'
  
  converged_ : bool
      True when convergence was reached in fit(), False
      otherwise.
  
  See Also
  --------
  GMM : Finite Gaussian mixture model fit with EM
  DPGMM : Infinite Gaussian mixture model, using the dirichlet
      process, fit with a variational algorithm
docstr: Monitor the lower bound during iteration
  
  Debug method to help see exactly when it is failing to converge as
  expected.
  
  Note: this is very expensive and should not be used by default.
docstr_tok: ["Monitor","the","lower","bound","during","iteration","Debug","method","to","help","see","exactly","when","it","is","failing","to","converge","as","expected",".","Note",":","this","is","very","expensive","and","should","not","be","used","by","default","."]
code: def _monitor(self, X, z, n, end=False):
      """Monitor the lower bound during iteration
  
      Debug method to help see exactly when it is failing to converge as
      expected.
  
      Note: this is very expensive and should not be used by default."""
      if self.verbose > 0:
          print(
              "Bound after updating %8s: %f"
              % (n, self.lower_bound(X, z))
          )
          if end:
              print("Cluster proportions:", self.gamma_)
              print("covariance_type:", self.covariance_type)
  
imports: from __future__ import print_function
  import numpy
  from scipy.special import digamma, gammaln
  from scipy import linalg
  from scipy.spatial.distance import cdist
  from ..externals.six.moves import xrange
  from ..utils import check_random_state, check_array, deprecated
  from ..utils.extmath import logsumexp, pinvh, squared_norm
  from ..utils.validation import check_is_fitted
  from ..None import cluster
  from .gmm import _GMMBase
label_desc: Use image node_id 8 for calling the VBGMM obj's underlying member method code with example usage: obj._monitor(X, z, n, end) without return types