class_docstr: An experimental setup to explore the ROC of drift detection setups
  
  This tests a setup based on a drift detector and a feature extractor (the latter including reducers).
  
  The detector is fitted with `post_training`.
  
  Then given datamodules for in-distribution and out-of-distribution, non-drifted and drifted batches are constructed. The test batches have the `sample_size` given as a constructor parameter and a fraction `ood_ratio` samples (rounded up) are from the out-of-distribution datamodule.
  
  The datamodules are expected to provide a `default_dataloader` method taking
  `batch_size` and `num_samples` arguments (see the examples for details).
code: def __init__(
      self,
      drift_detector,
      feature_extractor,
      ood_ratio=1.0,
      sample_size=1,
  ):
      self.ood_ratio = ood_ratio
      self.sample_size = sample_size
      self.drift_detector = drift_detector
      self.feature_extractor = feature_extractor
  
imports: import torch
  import tqdm
  from .fit import fit
  import torchdrift.utils
label_desc: Use image node_id 1 to create a new DriftDetectionExperiment object  with example: obj = DriftDetectionExperiment(drift_detector, feature_extractor, ood_ratio, sample_size)