class_docstr: A probabilistic clustering method for determining groupings among data samples.
  
  Parameters:
  -----------
  k: int
      The number of clusters the algorithm will form.
  max_iterations: int
      The number of iterations the algorithm will run for if it does
      not converge before that. 
  tolerance: float
      If the difference of the results from one iteration to the next is
      smaller than this value we will say that the algorithm has converged.
class_docstr_tok: ["A","probabilistic","clustering","method","for","determining","groupings","among","data","samples",".","Parameters",":","--","--","--","--","--","-","k",":","int","The","number","of","clusters","the","algorithm","will","form",".","max_iterations",":","int","The","number","of","iterations","the","algorithm","will","run","for","if","it","does","not","converge","before","that",".","tolerance",":","float","If","the","difference","of","the","results","from","one","iteration","to","the","next","is","smaller","than","this","value","we","will","say","that","the","algorithm","has","converged","."]
docstr: Likelihood 
docstr_tok: ["Likelihood"]
code: def multivariate_gaussian(self, X, params):
      """Likelihood"""
      n_features = np.shape(X)[1]
      mean = params["mean"]
      covar = params["cov"]
      determinant = np.linalg.det(covar)
      likelihoods = np.zeros(np.shape(X)[0])
      for i, sample in enumerate(X):
          d = n_features  # dimension
          coeff = 1.0 / (
              math.pow((2.0 * math.pi), d / 2) * math.sqrt(determinant)
          )
          exponent = math.exp(
              -0.5
              * (sample - mean)
              .T.dot(np.linalg.pinv(covar))
              .dot((sample - mean))
          )
          likelihoods[i] = coeff * exponent
  
      return likelihoods
  
file_path: ML-From-Scratch/mlfromscratch/unsupervised_learning/gaussian_mixture_model.py
imports: from __future__ import division, print_function
  import math
  from sklearn import datasets
  import numpy
  from mlfromscratch.utils import normalize, euclidean_distance, calculate_covariance_matrix
  from mlfromscratch.utils import Plot
label_desc: Use image node_id 3 for calling the GaussianMixtureModel obj's underlying member method code with example usage: obj.multivariate_gaussian(X, params) and returns: likelihoods