class_docstr: Iteratively stratify a multi-label data set into folds
  
  Construct an interative stratifier that splits the data set into folds trying to maintain balanced representation
  with respect to order-th label combinations.
  
  Attributes
  ----------
  
  n_splits : number of splits, int
      the number of folds to stratify into
  
  order : int, >= 1
      the order of label relationship to take into account when balancing sample distribution across labels
  
  sample_distribution_per_fold : None or List[float], :code:`(n_splits)`
      desired percentage of samples in each of the folds, if None and equal distribution of samples per fold
      is assumed i.e. 1/n_splits for each fold. The value is held in :code:`self.percentage_per_fold`.
  
  shuffle : bool
      Whether to shuffle the data before splitting into batches. Note that the samples within each split
      will not be shuffled.
  
  random_state : int, RandomState instance or None
      integer to seed the RNG, or the RNG state to use; if None (the default), will use the global
      state of numpy RNG
docstr: Internal method to distribute evidence for unlabeled samples across folds
  
  For params, see documentation of :code:`self._prepare_stratification`. Does not return anything,
  modifies params.
docstr_tok: ["Internal","method","to","distribute","evidence","for","unlabeled","samples","across","folds","For","params",",","see","documentation","of",":","code",":","`","self._prepare_stratification","`",".","Does","not","return","anything",",","modifies","params","."]
code: def _distribute_negative_evidence(self, rows_used, folds):
      """Internal method to distribute evidence for unlabeled samples across folds
  
      For params, see documentation of :code:`self._prepare_stratification`. Does not return anything,
      modifies params.
      """
      available_samples = [i for i, v in rows_used.items() if not v]
      samples_left = len(available_samples)
  
      while samples_left > 0:
          row = available_samples.pop()
          rows_used[row] = True
          samples_left -= 1
          fold_selected = self._rng_state.choice(
              np.where(self.desired_samples_per_fold > 0)[0], 1
          )[0]
          self.desired_samples_per_fold[fold_selected] -= 1
          folds[fold_selected].append(row)
  
file_path: scikit-multilearn/skmultilearn/model_selection/iterative_stratification.py
imports: from sklearn.model_selection._split import _BaseKFold
  import numpy
  import scipy.sparse
  import itertools
  from sklearn.utils import check_random_state
label_desc: Use image node_id 4 for calling the IterativeStratification obj's underlying member method code with example usage: obj._distribute_negative_evidence(rows_used, folds) without return types