docs: def predict_y(self, xq, sigma=None, k = None):
          """Provide an prediction of xq in the output space
  
          @param xq  an array of float of length dim_x
          @param estimated_sigma  if False (default), sigma_sq=self.sigma_sq, else it is estimated from the neighbor distances in self._weights(.)
          """
          #print(len(xq) , self.dataset.dim_x)
          assert len(xq) == self.dataset.dim_x
          sigma_sq = self.sigma_sq if sigma is None else sigma*sigma
          k = k or self.k
  
          dists, index = self.dataset.nn_x(xq, k = k)
          #print(list(index))
  
          w = self._weights(dists, index, sigma_sq)
          idx = index[np.argmax(w)]
          return self.dataset.get_y(idx)