class_docstr: Maximum independence domain adaptation
  Args:
      n_components (int): Number of components to keep.
      kernel (str): "linear", "rbf", or "poly". Kernel to use for MIDA. Defaults to "linear".
      mu (float): Hyperparameter of the l2 penalty. Defaults to 1.0.
      eta (float): Hyperparameter of the label dependence. Defaults to 1.0.
      augmentation (bool): Whether using covariates as augment features. Defaults to False.
      kernel_params (dict or None): Parameters for the kernel. Defaults to None.
  
  References:
      [1] Yan, K., Kou, L. and Zhang, D., 2018. Learning domain-invariant subspace using domain features and
          independence maximization. IEEE transactions on cybernetics, 48(1), pp.288-299.
code: def _get_kernel(self, x, y=None):
      if self.kernel in ["linear", "rbf", "poly"]:
          params = self.kernel_params or {}
      else:
          raise ValueError("Pre-computed kernel not supported")
      return pairwise_kernels(
          x, y, metric=self.kernel, filter_params=True, **params
      )
  
imports: import logging
  import warnings
  import numpy
  from numpy.linalg import multi_dot
  from scipy import linalg
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.metrics.pairwise import pairwise_kernels
  from sklearn.preprocessing import KernelCenterer, LabelBinarizer
  from sklearn.utils.validation import check_is_fitted
  from tensorly.base import fold, unfold
  from tensorly.tenalg import multi_mode_dot
label_desc: Use image node_id 2 for calling the MIDA obj's underlying member method code with example usage: obj._get_kernel(x, y) and returns: pairwise_kernels