code: def train(self, dataset):
          r
          X, Y = dataset.format_sklearn()
          X = np.array(X)
          Y = np.array(Y)
  
          self.n_labels_ = np.shape(Y)[1]
          self.n_features_ = np.shape(X)[1]
  
          self.clfs_ = []
          for i in range(self.n_labels_):
              # TODO should we handle it here or we should handle it before calling
              if len(np.unique(Y[:, i])) == 1:
                  clf = DummyClf()
              else:
                  clf = copy.deepcopy(self.base_clf)
              self.clfs_.append(clf)
  
          Parallel(n_jobs=self.n_jobs, backend='threading')(
              delayed(_fit_model)(self.clfs_[i], X, Y[:, i])
              for i in range(self.n_labels_))
          #clf.train(Dataset(X, Y[:, i]))
  
          return self
docs: r"""Train model with given feature.
  
          Parameters
          ----------
          X : array-like, shape=(n_samples, n_features)
              Train feature vector.
  
          Y : array-like, shape=(n_samples, n_labels)
              Target labels.
  
          Attributes
          ----------
          clfs\_ : list of :py:mod:`libact.models` object instances
              Classifier instances.
  
          Returns
          -------
          self : object
              Retuen self.