class_docstr: A classifier 2 sample test, which tests for a difference between a source and target dataset.  It fits a
  classifier to predict if a sample is in the source and target dataset, then computes an evaluation metric on a
  holdout which becomes the test statistic.
  
  Parameters
  ----------
  classifier_class : an AutoGluon predictor, such as autogluon.tabular.TabularPredictor
      The predictor (classifier) class to classify the source from target dataset, predictor class needs to support
      binary classification
  sample_label : str, default = 'xshift_label'
      The label that will be used to indicate if the sample is from training or test
  eval_metric : callable, default = autogluon.core.metrics.balanced_accuracy
      Binary classification metric to use for the classifier 2 sample test, currently only metrics that accept binary
      predictions are supported, such as balanced_accuracy
  compute_fi : bool, default = True
      To compute the feature importances set to True, this can be computationally intensive
  split : float, default = 0.5
      Training/test split proportion for classifier 2 sample test
  classifier_kwargs : dict, default = {}
      The kwargs passed to the classifier, a member of classifier_class
  test_size_2st: float, default = 0.3
      The size of the test set in the training test split in 2ST
code: def __init__(
      self,
      classifier_class,
      sample_label="xshift_label",
      eval_metric=roc_auc,
      split=0.5,
      compute_fi=True,
      classifier_kwargs: Optional[Dict] = None,
      test_size_2st=0.3,
  ):
      if classifier_kwargs is None:
          classifier_kwargs = {}
      else:
          classifier_kwargs = copy.deepcopy(classifier_kwargs)
      classifier_kwargs.update(
          {"label": sample_label, "eval_metric": eval_metric}
      )
      self.classifier = classifier_class(**classifier_kwargs)
      self.classifier_class = classifier_class
      self.split = split
      self.sample_label = sample_label
      self.eval_metric = eval_metric
      self._is_fit = False
      self._test = None
      self.test_stat = None
      self.has_fi: Optional[bool] = None
      self.compute_fi = compute_fi
      self.test_size_2st = test_size_2st
  
imports: import copy
  from typing import Any, Dict, List, Optional, Union
  import numpy
  import pandas
  from autogluon.core.constants import BINARY
  from autogluon.core.metrics import BINARY_METRICS, roc_auc
  from autogluon.core.utils import generate_train_test_split
  from autogluon.tabular import TabularPredictor
  from ..None import AnalysisState
  from ..state import StateCheckMixin
  from .base import AbstractAnalysis
label_desc: Use image node_id 1 to create a new Classifier2ST object  with example: obj = Classifier2ST(classifier_class, sample_label, eval_metric, split, compute_fi, classifier_kwargs, test_size_2st)