docs: def fit(self, features, classes):
          """Constructs the DistanceClassifier from the provided training data
  
          Parameters
          ----------
          features: array-like {n_samples, n_features}
              Feature matrix
          classes: array-like {n_samples}
              List of class labels for prediction
  
          Returns
          -------
          None
  
          """
          # class labels
          classes = self.le.fit_transform(classes)
  
          # group the data by class label
          X = []
          self.mu = []
          self.Z = []
          for i in np.unique(classes):
              X.append(features[classes == i])
              self.mu.append(np.mean(X[i],axis=0))
              if self.d == 'mahalanobis':
                  self.Z.append(np.cov(X[i].transpose()))
  
          return self