class_docstr: Fits a GP by tuning the kernel hyper-params. 
class_docstr_tok: ["Fits","a","GP","by","tuning","the","kernel","hyper-params","."]
docstr: Set up for the ESP kernel. 
code: def _esp_kernel_set_up(self):
      """Set up for the ESP kernel."""
      if self.options.esp_kernel_type not in ["se", "matern"]:
          raise NotImplementedError("Not implemented yet.")
      # Scale
      self.scale_log_bounds = [
          np.log(0.1 * self.Y_var),
          np.log(10 * self.Y_var),
      ]
      self.param_order.append(["scale", "cts"])
      # Bandwidths
      X_std_norm = np.linalg.norm(self.X, "fro") + 1e-4
      single_bandwidth_log_bounds = [
          np.log(0.01 * X_std_norm),
          np.log(10 * X_std_norm),
      ]
      self.bandwidth_log_bounds = [
          single_bandwidth_log_bounds
      ] * self.dim
      for _ in range(self.dim):
          self.param_order.append(["dim_bandwidths", "cts"])
      self.cts_hp_bounds += [
          self.scale_log_bounds
      ] + self.bandwidth_log_bounds
      if (
          self.options.esp_kernel_type == "matern"
          and self.options.esp_matern_nu < 0
      ):
          self.dscr_hp_vals.append([0.5, 1.5, 2.5])
          self.param_order.append(["nu", "dscr"])
  
imports: from __future__ import division
  from argparse import Namespace
  import numpy
  from .None import gp_core, mf_gp
  from .None import kernel
  from ..utils.ancillary_utils import get_list_of_floats_as_str
  from ..utils.general_utils import get_sublist_from_indices, map_to_bounds
  from ..utils.option_handler import get_option_specs, load_options
  from ..utils.oper_utils import random_sample_from_discrete_domain
  from ..utils.reporters import get_reporter
label_desc: Use image node_id 6 for calling the EuclideanGPFitter obj's underlying member method code with example usage: obj._esp_kernel_set_up() without return types