class_docstr: For each train / validation split, training data includes all available past data.
  
  For example, for ``prediction_length=2``, ``num_val_windows=3`` and ``val_step_size=1`` the folds are::
  
      |-------------------|
      | x x x x x y y - - |
      | x x x x x x y y - |
      | x x x x x x x y y |
  
  where ``x`` are the train time steps and ``y`` are the validation time steps.
  
  Train data includes only time steps denoted by ``x``, and validation data includes both ``x`` and ``y`` time steps.
  
  Parameters
  ----------
  prediction_length : int
      Length of the forecast horizon.
  num_val_windows: int, default = 1
      Number of windows to generate from each time series in the dataset.
  val_step_size : int, optional
      The end of each subsequent window is moved this many time steps forward.
class_docstr_tok: ["For","each","train","\/","validation","split",",","training","data","includes","all","available","past","data",".","For","example",",","for","``","prediction_length=2","``",",","``","num_val_windows=3","``","and","``","val_step_size=1","``","the","folds","are",":",":","|","--","--","--","--","--","--","--","--","--","-|","|","x","x","x","x","x","y","y","-","-","|","|","x","x","x","x","x","x","y","y","-","|","|","x","x","x","x","x","x","x","y","y","|","where","``","x","``","are","the","train","time","steps","and","``","y","``","are","the","validation","time","steps",".","Train","data","includes","only","time","steps","denoted","by","``","x","``",",","and","validation","data","includes","both","``","x","``","and","``","y","``","time","steps",".","Parameters","--","--","--","--","--","prediction_length",":","int","Length","of","the","forecast","horizon",".","num_val_windows",":","int",",","default","=","1","Number","of","windows","to","generate","from","each","time","series","in","the","dataset",".","val_step_size",":","int",",","optional","The","end","of","each","subsequent","window","is","moved","this","many","time","steps","forward","."]
code: def __init__(
      self,
      prediction_length: int,
      num_val_windows: int = 1,
      val_step_size: Optional[int] = None,
  ):
      super().__init__(
          prediction_length=prediction_length,
          num_val_windows=num_val_windows,
      )
      if val_step_size is None:
          val_step_size = prediction_length
      self.val_step_size = val_step_size
  
file_path: autogluon/timeseries/src/autogluon/timeseries/splitter.py
imports: from typing import Iterator, Optional, Tuple
  from .dataset.ts_dataframe import TimeSeriesDataFrame
label_desc: Use image node_id 1 to create a new ExpandingWindowSplitter object from inherited base classes: AbstractWindowSplitter with example: obj = ExpandingWindowSplitter(prediction_length, num_val_windows, val_step_size)