class_docstr: Supervised Time Series Forest (STSF).
  
  An ensemble of decision trees built on intervals selected through a supervised
  process as described in _[1].
  Overview: Input n series length m
  For each tree
      - sample X using class-balanced bagging
      - sample intervals for all 3 representations and 7 features using supervised
      - method
      - find mean, median, std, slope, iqr, min and max using their corresponding
      - interval for each rperesentation, concatenate to form new data set
      - build decision tree on new data set
  Ensemble the trees with averaged probability estimates.
  
  Parameters
  ----------
  n_estimators : int, default=200
      Number of estimators to build for the ensemble.
  n_jobs : int, default=1
      The number of jobs to run in parallel for both `fit` and `predict`.
      ``-1`` means using all processors.
  random_state : int or None, default=None
      Seed for random number generation.
  
  Attributes
  ----------
  n_classes_ : int
      The number of classes.
  n_instances_ : int
      The number of train cases.
  series_length_ : int
      The length of each series.
  classes_ : list
      The classes labels.
  intervals : array-like of shape [n_estimators][3][7][n_intervals][2]
      Stores indexes of all start and end points for all estimators. Each estimator
      contains indexes for each representation and feature combination.
  estimators_ : list of shape (n_estimators) of DecisionTreeClassifier
      The collections of estimators trained in fit.
  
  Notes
  -----
  For the Java version, see
  `TSML <https://github.com/uea-machine-learning/tsml/blob/master/src/main/
   java/tsml/classifiers/interval_based/STSF.java>`_.
  
  References
  ----------
  .. [1] Cabello, Nestor, et al. "Fast and Accurate Time Series Classification
     Through Supervised Interval Search." IEEE ICDM 2020
  
  Examples
  --------
  >>> from sktime.classification.interval_based import SupervisedTimeSeriesForest
  >>> from sktime.datasets import load_unit_test
  >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
  >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
  >>> clf = SupervisedTimeSeriesForest(n_estimators=5)
  >>> clf.fit(X_train, y_train)
  SupervisedTimeSeriesForest(n_estimators=5)
  >>> y_pred = clf.predict(X_test)
code: def __init__(
      self,
      n_estimators=200,
      n_jobs=1,
      random_state=None,
  ):
      self.random_state = random_state
      self.n_estimators = n_estimators
      self.n_jobs = n_jobs
  
      # The following set in method fit
      self.n_instances_ = 0
      self.series_length_ = 0
      self.estimators_ = []
      self.intervals_ = []
  
      self._base_estimator = DecisionTreeClassifier(criterion="entropy")
      self._stats = [
          np.mean,
          np.median,
          np.std,
          _slope,
          stats.iqr,
          np.min,
          np.max,
      ]
  
      super().__init__()
  
imports: import math
  import numpy
  from joblib import Parallel, delayed
  from scipy import signal, stats
  from sklearn.base import clone
  from sklearn.preprocessing import StandardScaler
  from sklearn.tree import DecisionTreeClassifier
  from sklearn.utils.validation import check_random_state
  from sktime.classification.base import BaseClassifier
  from sktime.utils.slope_and_trend import _slope
label_desc: Use image node_id 1 to create a new SupervisedTimeSeriesForest object from inherited base classes: BaseClassifier with example: obj = SupervisedTimeSeriesForest(n_estimators, n_jobs, random_state)