code: def loo_negloglikelihood(self):
      # get all pdf values of the training data (including 'self interaction')
      pdfs = self._individual_pdfs(self.data)
  
      # get indices to remove diagonal values for LOO part :)
      indices = np.diag_indices(pdfs.shape[0])
  
      # combine values based on fully_dimensional!
      if self.fully_dimensional:
          pdfs[indices] = 0  # remove self interaction
  
          pdfs2 = np.sum(np.prod(pdfs, axis=-1), axis=-1)
          sm_return_value = -np.log(pdfs2).sum()
          pdfs = np.prod(pdfs, axis=-1)
  
          # take weighted average (accounts for LOO!)
          lhs = np.sum(pdfs * self.weights, axis=-1) / (
              1 - self.weights
          )
      else:
          # import pdb; pdb.set_trace()
          pdfs[
              indices
          ] = 0  # we sum first so 0 is the appropriate value
          pdfs *= self.weights[:, None, None]
  
          pdfs = pdfs.sum(axis=-2) / (1 - self.weights[:, None])
          lhs = np.prod(pdfs, axis=-1)
  
      return -np.sum(self.weights * np.log(lhs))
  
file_path: auptimizer/src/aup/Proposer/hpbandster/optimizers/kde/mvkde.py
imports: import numpy
  import scipy.optimize
  import ConfigSpace
  from hpbandster.optimizers.kde.kernels import Gaussian, AitchisonAitken, WangRyzinOrdinal, WangRyzinInteger
label_desc: Use image node_id 7 for calling the MultivariateKDE obj's underlying member method code with example usage: obj.loo_negloglikelihood() and returns: unknown