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: init function.
docstr_tok: ["init","function","."]
code: def __init__(
      self,
      estimator: str,
      forecast_horizon: int,
      estimator_map: Optional[Union[int, List[int]]] = None,
      score_func: Callable = mean_squared_error,
      coverage: float = 0.95,
      null_model_params: Optional[dict] = None,
      estimator_params: Optional[dict] = None,
  ):
      """init function."""
      # Superclass init.
      super().__init__(
          score_func=score_func,
          coverage=coverage,
          null_model_params=null_model_params,
      )
  
      self.estimator = estimator
      self.estimator_params = estimator_params
      self.forecast_horizon = forecast_horizon
      self.estimator_map = estimator_map
  
      # Set by `fit` method.
      self.estimator_map_list = (
          None  # List of forecast horizons for each estimator
      )
      self.estimator_param_names = None  # Estimator parameter names
      self.estimator_class = None  # Estimator class
      self.estimators = None  # Estimator instances
      self.model_results = None  # Estimator fit outputs
      self.pred_indices = None  # Indices to splice forecasts
      self.train_end_date = None  # Last training timestamp
  
      # Set by `predict` method.
      self.forecast = None
  
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 1 to create a new OneByOneEstimator object from inherited base classes: BaseForecastEstimator with example: obj = OneByOneEstimator(estimator, forecast_horizon, estimator_map, score_func, coverage, null_model_params, estimator_params)