code: def fit(self, data, labels, **kwargs):
          
          # train the network
          self._som.train(data, **kwargs)
          # retrieve first and second bmus and distances
          bmus, q_error, t_error = self.bmus_with_errors(data)
          # set errors measures of training data
          self.quant_error = q_error
          self.topog_error = t_error
          # store training bmus
          self._bmus = bmus
          # calibrate
          self._calibrate(data, labels)
docs: \
          Training the SOM on the the data and calibrate itself.
  
          After the training, `self.quant_error` and `self.topog_error` are 
          respectively set.
  
          :param data: sparse input matrix (ideal dtype is `numpy.float32`)
          :type data: :class:`scipy.sparse.csr_matrix`
          :param labels: the labels associated with data
          :type labels: iterable
          :param \**kwargs: optional parameters for :meth:`train`