class_docstr: Cost function of a clustering problem.
  
  Parameters
  ----------
  points: np.ndarray
      k x n array where k is the number of points and n their coordinates
  num_clusters: int
      number of clusters to find
code: def __init__(
      self, points: np.ndarray, num_clusters: int, rescale: bool = True
  ) -> None:
      self.num_clusters = num_clusters
      self._points = np.array(points, copy=True)
      if rescale:
          self._points -= np.mean(self._points, axis=0, keepdims=True)
          self._points /= np.std(self._points, axis=0, keepdims=True)
      super().__init__(
          self._compute_distance,
          p.Array(shape=(num_clusters, points.shape[1])),
      )
  
imports: import numpy
  import pandas
  import scipy.spatial
  from nevergrad.parametrization import parameter
  import nevergrad.common.typing
  from ..base import ExperimentFunction
  from .None import datasets
label_desc: Use image node_id 1 to create a new Clustering object from inherited base classes: ExperimentFunction with example: obj = Clustering(points, num_clusters, rescale)