class_docstr: SUOD (Scalable Unsupervised Outlier Detection) is an acceleration
  framework for large scale unsupervised outlier detector training and
  prediction. The corresponding paper is under review in KDD 2020.
  
  Parameters
  ----------
  base_estimators: list, length must be greater than 1
          A list of base estimators. Certain methods must be present, e.g.,
          `fit` and `predict`.
  
  contamination : float in (0., 0.5), optional (default=0.1)
          The amount of contamination of the data set,
          i.e. the proportion of outliers in the data set. Used when fitting to
          define the threshold on the decision function.
  
  n_jobs : optional (default=1)
          The number of jobs to run in parallel for both `fit` and
          `predict`. If -1, then the number of jobs is set to the
          the number of jobs that can actually run in parallel.
  
  rp_clf_list : list, optional (default=None)
          The list of outlier detection models to use random projection. The
          detector name should be consistent with PyOD.
  
  rp_ng_clf_list : list, optional (default=None)
          The list of outlier detection models NOT to use random projection. The
          detector name should be consistent with PyOD.
  
  rp_flag_global : bool, optional (default=True)
          If set to False, random projection is turned off for all base models.
  
  target_dim_frac : float in (0., 1), optional (default=0.5)
          The target compression ratio.
  
  jl_method : string, optional (default = 'basic')
          The JL projection method:
  
          - "basic": each component of the transformation matrix is taken at
            random in N(0,1).
          - "discrete", each component of the transformation matrix is taken at
            random in {-1,1}.
          - "circulant": the first row of the transformation matrix is taken at
            random in N(0,1), and each row is obtained from the previous one
            by a one-left shift.
          - "toeplitz": the first row and column of the transformation matrix
            is taken at random in N(0,1), and each diagonal has a constant value
            taken from these first vector.
  
  bps_flag : bool, optional (default=True)
          If set to False, balanced parallel scheduling is turned off.
  
  approx_clf_list : list, optional (default=None)
          The list of outlier detection models to use pseudo-supervised
          approximation. The detector name should be consistent with PyOD.
  
  approx_ng_clf_list : list, optional (default=None)
          The list of outlier detection models NOT to use pseudo-supervised
          approximation. The detector name should be consistent with PyOD.
  
  approx_flag_global : bool, optional (default=True)
          If set to False, pseudo-supervised approximation is turned off.
  
  approx_clf : object, optional (default: sklearn RandomForestRegressor)
          The supervised model used to approximate unsupervised models.
  
  cost_forecast_loc_fit : str, optional
          The location of the pretrained cost prediction forecast for training.
  
  cost_forecast_loc_pred : str, optional
          The location of the pretrained cost prediction forecast for prediction.
  
  verbose : bool, optional (default=False)
          Controls the verbosity of the building process.
docstr: Internal function to valid the initial parameters
  
  Returns
  -------
  self : object
          Post-check estimator.
docstr_tok: ["Internal","function","to","valid","the","initial","parameters","Returns","--","--","--","-","self",":","object","Post-check","estimator","."]
code: def _parameter_validation(
      self,
      contamination,
      n_jobs,
      rp_clf_list,
      rp_ng_clf_list,
      approx_clf_list,
      approx_ng_clf_list,
      approx_clf,
  ):
      """Internal function to valid the initial parameters
  
      Returns
      -------
      self : object
              Post-check estimator.
      """
  
      if not (0.0 < contamination <= 0.5):
          raise ValueError(
              "contamination must be in (0, 0.5], "
              "got: %f" % contamination
          )
  
      self.contamination = contamination
  
      if approx_clf is not None:
          self.approx_clf = approx_clf
      else:
          self.approx_clf = RandomForestRegressor(n_estimators=50)
  
      if n_jobs is None:
          self.n_jobs = 1
      elif n_jobs == -1:
          self.n_jobs = effective_n_jobs()
      else:
          self.n_jobs = n_jobs
  
      # validate random projection list
      if rp_clf_list is None:
          # the algorithms that should be be using random projection
          self.rp_clf_list = ["LOF", "KNN", "ABOD", "COF"]
      else:
          self.rp_clf_list = rp_clf_list
  
      if rp_ng_clf_list is None:
          # the algorithms that should not be using random projection
          self.rp_ng_clf_list = [
              "IForest",
              "PCA",
              "HBOS",
              "MCD",
              "LMDD",
          ]
      else:
          self.rp_ng_clf_list = rp_ng_clf_list
  
      # Validate target_dim_frac
      check_parameter(
          self.target_dim_frac,
          low=0,
          high=1,
          include_left=False,
          include_right=True,
          param_name="target_dim_frac",
      )
  
      # validate model approximation list
      if approx_clf_list is None:
          # the algorithms that should be be using approximation
          self.approx_clf_list = ["LOF", "KNN", "CBLOF", "OCSVM"]
      else:
          self.approx_clf_list = approx_clf_list
  
      if approx_ng_clf_list is None:
          # the algorithms that should not be using approximation
          self.approx_ng_clf_list = [
              "PCA",
              "HBOS",
              "ABOD",
              "MCD",
              "LMDD",
              "LSCP",
              "IForest",
          ]
      else:
          self.approx_ng_clf_list = approx_ng_clf_list
  
imports: import os
  import sys
  import time
  import numbers
  import numpy
  from sklearn.ensemble import RandomForestRegressor
  from sklearn.utils import check_array
  import joblib
  from joblib import Parallel, delayed, effective_n_jobs
  from joblib.externals.loky.backend.context import set_start_method
  from pyod.models.sklearn_base import _pprint
  from pyod.utils.utility import check_parameter
  from suod.models.parallel_processes import cost_forecast_meta
  from suod.models.parallel_processes import balanced_scheduling
  from suod.models.parallel_processes import _parallel_fit
  from suod.models.parallel_processes import _parallel_predict
  from suod.models.parallel_processes import _parallel_predict_proba
  from suod.models.parallel_processes import _parallel_decision_function
  from suod.models.parallel_processes import _partition_estimators
  from suod.models.parallel_processes import _parallel_approx_estimators
  from ..utils.utility import _unfold_parallel, build_codes, _get_sklearn_version
  import warnings
  from collections import defaultdict
  from inspect import signature
label_desc: Use image node_id 2 for calling the SUOD obj's underlying member method code with example usage: obj._parameter_validation(contamination, n_jobs, rp_clf_list, rp_ng_clf_list, approx_clf_list, approx_ng_clf_list, approx_clf) without return types