class_docstr: Base class for sliding and expanding window splitter.
docstr: Get the first split point.
docstr_tok: ["Get","the","first","split","point","."]
code: def _get_start(self, y: pd.Index, fh: ForecastingHorizon) -> int:
      """Get the first split point."""
      # By default, the first split point is the index zero, the first
      # observation in
      # the data.
      start = 0
  
      # If we start with a full window, the first split point depends on the window
      # length.
      if hasattr(self, "start_with_window") and self.start_with_window:
          if self._initial_window not in [None, 0]:
              if is_timedelta_or_date_offset(x=self._initial_window):
                  start = y.get_loc(
                      y[start] + self._initial_window + self.step_length
                  )
              else:
                  start += self._initial_window + self.step_length
          else:
              if is_timedelta_or_date_offset(x=self.window_length):
                  start = y.get_loc(y[start] + self.window_length)
              else:
                  start += self.window_length
  
      # For in-sample forecasting horizons, the first split must ensure that
      # in-sample test set is still within the data.
      if not fh.is_all_out_of_sample():
          fh_min = abs(fh[0])
          if is_int(fh_min):
              start = fh_min + 1 if fh_min >= start else start
          else:
              shifted_y0 = y[0] + fh_min
              start = (
                  np.argmin(y <= shifted_y0)
                  if shifted_y0 >= y[start]
                  else start
              )
      return start
  
imports: from typing import Optional
  import numpy
  import pandas
  from sktime.datatypes._utilities import get_index_for_series
  from sktime.forecasting.base import ForecastingHorizon
  from sktime.split.base import BaseSplitter
  from sktime.split.base._common import ACCEPTED_Y_TYPES, FORECASTING_HORIZON_TYPES, SPLIT_ARRAY_TYPE, SPLIT_GENERATOR_TYPE, _check_fh, _check_inputs_for_compatibility, _get_end
  from sktime.utils.validation import ACCEPTED_WINDOW_LENGTH_TYPES, NON_FLOAT_WINDOW_LENGTH_TYPES, array_is_int, check_window_length, is_int, is_timedelta_or_date_offset
  from sktime.utils.validation.forecasting import check_step_length
label_desc: Use image node_id 8 for calling the BaseWindowSplitter obj's underlying member method code with example usage: obj._get_start(y, fh) and returns: start