class_docstr: Cross validation splitter for time series data
class_docstr_tok: ["Cross","validation","splitter","for","time","series","data"]
code: def _validate_params(self):
      if self.min_train_len is None and self.n_splits is None:
          raise BacktestException(
              "min_train_len and n_splits cannot both be None..."
          )
  
      if self.window_type not in [
          TimeSeriesSplitSchemeKeys.SPLIT_TYPE_EXPANDING.value,
          TimeSeriesSplitSchemeKeys.SPLIT_TYPE_ROLLING.value,
      ]:
          raise BacktestException("unknown window type...")
  
      # forecast length invalid
      if self.forecast_len <= 0:
          raise BacktestException(
              "holdout period length must be positive..."
          )
  
      # train + test length cannot be longer than df length
      if self.min_train_len + self.forecast_len > self._full_len:
          raise BacktestException(
              "required time span is more than the full data frame..."
          )
  
      if self.n_splits is not None and self.n_splits < 1:
          raise BacktestException("n_split must be a positive number")
  
      if self.date_col:
          if self.date_col not in self.df.columns:
              raise BacktestException(
                  "date_col not found in df provided."
              )
  
imports: import pandas
  import numpy
  import matplotlib.pyplot
  from copy import deepcopy
  import inspect
  from .metrics import smape, wmape, mape, mse, mae, rmsse
  from ..exceptions import BacktestException
  from ..constants.constants import TimeSeriesSplitSchemeKeys, BacktestFitKeys
  from ..constants.palette import OrbitPalette
  from orbit.utils.plot import orbit_style_decorator
label_desc: Use image node_id 3 for calling the TimeSeriesSplitter obj's underlying member method code with example usage: obj._validate_params() without return types