class_docstr: The `GaussianMixtureNB` estimator is a naive bayes classifier that uses a mixture of gaussians instead of
  merely a single one. In particular it trains a `GaussianMixture` model for each class in the target and for each
  feature in the data, on the subset of `X` where `y == class`.
  
  You can pass any keyword parameter that scikit-learn's
  [GaussianMixture](https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html)
  model uses and it will be passed along to each of the models.
  
  Attributes
  ----------
  gmms_ : dict[int, List[GaussianMixture]]
      A dictionary of Gaussian Mixture Models, one for each class.
  classes_ : np.ndarray of shape (n_classes,)
      The classes seen during `fit`.
  n_features_in_ : int
      The number of features seen during `fit`.
  num_fit_cols_ : int
      Deprecated, please use `n_features_in_` instead.
docstr: Predict probabilities for `X` using fitted estimator by summing the probabilities of each gaussian for each
  class.
  
  Parameters
  ----------
  X : array-like of shape (n_samples, n_features)
      The data to predict.
  
  Returns
  -------
  array-like of shape (n_samples, n_classes)
      The predicted probabilities.
docstr_tok: ["Predict","probabilities","for","`","X","`","using","fitted","estimator","by","summing","the","probabilities","of","each","gaussian","for","each","class",".","Parameters","--","--","--","--","--","X",":","array-like","of","shape","(","n_samples",",","n_features",")","The","data","to","predict",".","Returns","--","--","--","-","array-like","of","shape","(","n_samples",",","n_classes",")","The","predicted","probabilities","."]
code: def predict_proba(self, X: np.ndarray):
      """Predict probabilities for `X` using fitted estimator by summing the probabilities of each gaussian for each
      class.
  
      Parameters
      ----------
      X : array-like of shape (n_samples, n_features)
          The data to predict.
  
      Returns
      -------
      array-like of shape (n_samples, n_classes)
          The predicted probabilities.
      """
      check_is_fitted(self, ["gmms_", "classes_", "n_features_in_"])
      X = check_array(X, estimator=self, dtype=FLOAT_DTYPES)
      if self.n_features_in_ != X.shape[1]:
          raise ValueError(
              f"number of columns {X.shape[1]} does not match fit size {self.n_features_in_}"
          )
      check_is_fitted(self, ["gmms_", "classes_"])
      probs = np.zeros((X.shape[0], len(self.classes_)))
      for k, v in self.gmms_.items():
          class_idx = int(np.argwhere(self.classes_ == k))
          probs[:, class_idx] = np.array(
              [
                  m.score_samples(np.expand_dims(X[:, idx], 1))
                  for idx, m in enumerate(v)
              ]
          ).sum(axis=0)
      likelihood = np.exp(probs)
      return likelihood / likelihood.sum(axis=1).reshape(-1, 1)
  
imports: from warnings import warn
  import numpy
  from sklearn.base import BaseEstimator, ClassifierMixin
  from sklearn.mixture import BayesianGaussianMixture, GaussianMixture
  from sklearn.utils import check_X_y
  from sklearn.utils.multiclass import unique_labels
  from sklearn.utils.validation import FLOAT_DTYPES, check_array, check_is_fitted
label_desc: Use image node_id 4 for calling the GaussianMixtureNB obj's underlying member method code with example usage: obj.predict_proba(X) and returns: unknown