code: def multivariate_gaussian(self, X, params):
          
  
          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 / ((2.0 * np.pi) ** (d / 2)) * np.sqrt(determinant))
              exponent = np.exp(-0.5 * (sample - mean).T.dot(np.linalg.pinv(covar)).dot((sample - mean)))
              likelihoods[i] = coeff * exponent
  
          return likelihoods
docs: Likelihood