code: def _create_model(self, X, Y):
          
  
          # --- define kernel
          self.input_dim = X.shape[1]
          if self.kernel is None:
              kern = GPy.kern.RBF(self.input_dim, variance=1.)
          else:
              kern = self.kernel
              self.kernel = None
  
          # --- define model
          noise_var = Y.var()*0.01 if self.noise_var is None else self.noise_var
          self.model = GPy.models.GPRegression(X, Y, kernel=kern, noise_var=noise_var)
  
          # --- Define prior on the hyper-parameters for the kernel (for integrated acquisitions)
          self.model.kern.set_prior(GPy.priors.Gamma.from_EV(2.,4.))
          self.model.likelihood.variance.set_prior(GPy.priors.Gamma.from_EV(2.,4.))
  
          # --- Restrict variance if exact evaluations of the objective
          if self.exact_feval:
              self.model.Gaussian_noise.constrain_fixed(1e-6, warning=False)
          else:
              self.model.Gaussian_noise.constrain_positive(warning=False)
docs: Creates the model given some input data X and Y.