code: def _estimate_log_prob(self, X):
      _, n_features = X.shape
      log_gauss = _estimate_log_gaussian_prob(
          X,
          self.means_,
          self.precisions_cholesky_,
          self.covariance_type,
      ) - 0.5 * n_features * torch.log(self.degrees_of_freedom_)
  
      log_lambda = n_features * torch.log(
          torch.FloatTensor([2.0])
      ) + torch.sum(
          torch.digamma(
              0.5
              * (
                  self.degrees_of_freedom_
                  - torch.arange(0, n_features)[:, None]
              )
          ),
          0,
      )
  
      return log_gauss + 0.5 * (
          log_lambda - n_features / self.mean_precision_
      )
  
file_path: hummingbird/hummingbird/ml/operator_converters/_mixture_implementations.py
imports: import torch
  import torch.nn
  from ._physical_operator import PhysicalOperator
label_desc: Use image node_id 5 for calling the BayesianGaussianMixture obj's underlying member method code with example usage: obj._estimate_log_prob(X) and returns: unknown