code: def fit(self, X, y):
          
          # first, train a gaussian process like normal
          super(GPEiVelocity, self).fit(X, y)
  
          # probability of uniform
          self.POU = 0
          if len(y) >= self.r_minimum:
              # get the best few scores so far, and compute the average distance
              # between them.
              top_y = sorted(y)[-self.N_BEST_Y:]
              velocities = [top_y[i + 1] - top_y[i] for i in range(len(top_y) - 1)]
  
              # the probability of returning random parameters scales inversely with
              # the "velocity" of top scores.
              self.POU = np.exp(self.MULTIPLIER * np.mean(velocities))
docs: Train a gaussian process like normal, then compute a "Probability Of
          Uniform selection" (POU) value.