class_docstr: Forecast one-by-one estimator.
  
  Parameters
  ----------
  score_func : `callable`, default mean_squared_error
      Function to calculate model R2_null_model_score score,
      with signature (actual, predicted).
      ``actual``, ``predicted`` are array-like with the same shape.
      Smaller values are better.
  
  coverage : `float`, default 0.95
      Intended coverage of the prediction bands (0.0 to 1.0).
      If None, the upper/lower predictions are not returned by ``predict``.
  
  null_model_params : `dict`, default None
      Dictionary keys must be in ("strategy", "constant", "quantile").
      Defines null model. model score is R2_null_model_score of model error relative to null model,
      evaluated by score_func.
      If None, model score is score_func of the model itself.
  
  estimator : `str`
      The estimator used in forecast one-by-one.
      Must be one of the keys in ``ONEBYONE_ESTIMATORS``.
  
  forecast_horizon : `int`
      The forecast horizon.
  
  estimator_map : `bool`, `int` or `list` [`int`], default None
      The map between estimators and forecast horizons.
  
          If True, each time point in the forecasting period has a different model.
          If False, forecast one-by-one is turned off.
          If `int`, every ``estimator_map`` time points have a different model.
          If `list`, the sum must equal to the forecast horizon.
              The values are the number of timepoints in each estimator.
  
      For example, if forecast horizon is 7
  
          `estimator_map = True` corresponds to [1, 1, 1, 1, 1, 1, 1], 7 models.
          `estimator_map = 1` corresponds to [1, 1, 1, 1, 1, 1, 1], 7 models.
          `estimator_map = 2` corresponds to [2, 2, 2, 1], 4 models.
          `estimator_map = [1, 2, 4]` corresponds to 3 models.
          `estimator_map = False` corresponds to [7], 1 model.
          `estimator_map = None` corresponds to [7], 1 model.
  
  
  Attributes
  ----------
  estimator : `str`
      The estimator name.
  estimator_params : `dict`
      The parameters used in the estimator.
  forecast_horizon : `int`
      The forecast horizon.
  estimator_map : `bool`, `int`, `list` [`int]`
      The map between estimators and time points.
  estimator_map_list : `list` [`int`]
      The processed estimator_map as a list.
      We don't want to overwrite the original self.estimator_map.
  estimator_param_names : `list` [`str`]
      All available parameter names in estimator.
  estimator_class : `class`
      The estimator class.
  estimators : `list` [`class`]
      The list of estimator class instances.
  model_results : `list`
      The list of estimator fit method outputs.
  pred_indices : `list` [`int`]
      The list of indices used to splice forecasts.
  forecast : `pandas.DataFrame`
      The cached forecast results from the last call of ``self.predict``.
docstr: Fits a model to training data.
  
  Parameters
  ----------
  X : `pandas.DataFrame`
      Input timeseries, with timestamp column,
      value column, and any additional regressors.
      The value column is the response, included in
      ``X`` to allow transformation by `sklearn.pipeline`.
  y : ignored
      The original timeseries values, ignored.
      (The y for fitting is included in X.)
  time_col : `str`
      Time column name in X.
  value_col : `str`
      Value column name in X.
  fit_params : `dict`
      Additional parameters supported by subclass ``fit`` or null model.
docstr_tok: ["Fits","a","model","to","training","data",".","Parameters","--","--","--","--","--","X",":","`","pandas.DataFrame","`","Input","timeseries",",","with","timestamp","column",",","value","column",",","and","any","additional","regressors",".","The","value","column","is","the","response",",","included","in","``","X","``","to","allow","transformation","by","`","sklearn.pipeline","`",".","y",":","ignored","The","original","timeseries","values",",","ignored",".","(","The","y","for","fitting","is","included","in","X",".",")","time_col",":","`","str","`","Time","column","name","in","X.","value_col",":","`","str","`","Value","column","name","in","X.","fit_params",":","`","dict","`","Additional","parameters","supported","by","subclass","``","fit","``","or","null","model","."]
code: def fit(
      self,
      X,
      y=None,
      time_col=cst.TIME_COL,
      value_col=cst.VALUE_COL,
      **fit_params,
  ):
      """Fits a model to training data.
  
      Parameters
      ----------
      X : `pandas.DataFrame`
          Input timeseries, with timestamp column,
          value column, and any additional regressors.
          The value column is the response, included in
          ``X`` to allow transformation by `sklearn.pipeline`.
      y : ignored
          The original timeseries values, ignored.
          (The y for fitting is included in X.)
      time_col : `str`
          Time column name in X.
      value_col : `str`
          Value column name in X.
      fit_params : `dict`
          Additional parameters supported by subclass ``fit`` or null model.
      """
      super().fit(
          X=X, y=y, time_col=time_col, value_col=value_col, **fit_params
      )
      self._get_estimators()
      self.train_end_date = pd.to_datetime(X[time_col]).max()
      self.model_results = [
          estimator.fit(
              X=X, y=y, time_col=time_col, value_col=value_col
          )
          for estimator in self.estimators
      ]
      return self
  
imports: from copy import deepcopy
  from typing import Callable
  from typing import List
  from typing import Optional
  from typing import Union
  import pandas
  from sklearn.metrics import mean_squared_error
  from greykite.common import constants
  from greykite.common.logging import LoggingLevelEnum
  from greykite.common.logging import log_message
  from greykite.sklearn.estimator.base_forecast_estimator import BaseForecastEstimator
  from greykite.sklearn.estimator.prophet_estimator import ProphetEstimator
  from greykite.sklearn.estimator.silverkite_estimator import SilverkiteEstimator
  from greykite.sklearn.estimator.simple_silverkite_estimator import SimpleSilverkiteEstimator
label_desc: Use image node_id 4 for calling the OneByOneEstimator obj's underlying member method code with example usage: obj.fit(X, y, time_col, value_col) and returns: self