class_docstr: Wrapper for Facebook Prophet model.
  
  Parameters
  ----------
  score_func : callable
      see BaseForecastEstimator
  
  coverage : float between [0.0, 1.0]
      see BaseForecastEstimator
  
  null_model_params : dict with arguments to define DummyRegressor null model, optional, default=None
      see BaseForecastEstimator
  
  add_regressor_dict: dictionary of extra regressors to be added to the model, optional, default=None
      These should be available for training and entire prediction interval.
  
      Dictionary format::
  
          add_regressor_dict={  # we can add as many regressors as we want, in the following format
              "reg_col1": {
                  "prior_scale": 10,
                  "standardize": True,
                  "mode": 'additive'
              },
              "reg_col2": {
                  "prior_scale": 20,
                  "standardize": True,
                  "mode": 'multiplicative'
              }
          }
  
  add_seasonality_dict: dict of custom seasonality parameters to be added to the model, optional, default=None
      parameter details: https://github.com/facebook/prophet/blob/main/python/prophet/forecaster.py - refer to
      add_seasonality() function.
      Key is the seasonality component name e.g. 'monthly'; parameters are specified via dict.
  
      Dictionary format::
  
          add_seasonality_dict={
              'monthly': {
                  'period': 30.5,
                  'fourier_order': 5
              },
              'weekly': {
                  'period': 7,
                  'fourier_order': 20,
                  'prior_scale': 0.6,
                  'mode': 'additive',
                  'condition_name': 'condition_col'  # takes a bool column in df with True/False values. This means that
                  # the seasonality will only be applied to dates where the condition_name column is True.
              },
              'yearly': {
                  'period': 365.25,
                  'fourier_order': 10,
                  'prior_scale': 0.2,
                  'mode': 'additive'
              }
          }
  
      Note: If there is a conflict in built-in and custom seasonality e.g. both have "yearly", then custom seasonality
      will be used and Model will throw a warning such as:
      "INFO:prophet:Found custom seasonality named "yearly", disabling built-in yearly seasonality."
  
  kwargs : additional parameters
      Other parameters are the same as Prophet model, with one exception:
      ``interval_width`` is specified by ``coverage``.
  
      See source code ``__init__`` for the parameter names, and refer to
      Prophet documentation for a description:
  
          * https://facebook.github.io/prophet/docs/quick_start.html
          * https://github.com/facebook/prophet/blob/main/python/prophet/forecaster.py
  
  Attributes
  ----------
  model : ``Prophet`` object
      Prophet model object
  forecast : `pandas.DataFrame`
      Output of predict method of ``Prophet``.
class_docstr_tok: ["Wrapper","for","Facebook","Prophet","model",".","Parameters","--","--","--","--","--","score_func",":","callable","see","BaseForecastEstimator","coverage",":","float","between","[","0.0",",","1.0","]","see","BaseForecastEstimator","null_model_params",":","dict","with","arguments","to","define","DummyRegressor","null","model",",","optional",",","default=None","see","BaseForecastEstimator","add_regressor_dict",":","dictionary","of","extra","regressors","to","be","added","to","the","model",",","optional",",","default=None","These","should","be","available","for","training","and","entire","prediction","interval",".","Dictionary","format",":",":","add_regressor_dict=","{","#","we","can","add","as","many","regressors","as","we","want",",","in","the","following","format","``","reg_col1","''",":","{","``","prior_scale","''",":","10",",","``","standardize","''",":","True",",","``","mode","''",":","'additive'","}",",","``","reg_col2","''",":","{","``","prior_scale","''",":","20",",","``","standardize","''",":","True",",","``","mode","''",":","'multiplicative'","}","}","add_seasonality_dict",":","dict","of","custom","seasonality","parameters","to","be","added","to","the","model",",","optional",",","default=None","parameter","details",":","https",":","\/\/github.com\/facebook\/prophet\/blob\/main\/python\/prophet\/forecaster.py","-","refer","to","add_seasonality","(",")","function",".","Key","is","the","seasonality","component","name","e.g",".","'monthly","'",";","parameters","are","specified","via","dict",".","Dictionary","format",":",":","add_seasonality_dict=","{","'monthly","'",":","{","'period","'",":","30.5",",","'fourier_order","'",":","5","}",",","'weekly","'",":","{","'period","'",":","7",",","'fourier_order","'",":","20",",","'prior_scale","'",":","0.6",",","'mode","'",":","'additive","'",",","'condition_name","'",":","'condition_col","'","#","takes","a","bool","column","in","df","with","True\/False","values",".","This","means","that","#","the","seasonality","will","only","be","applied","to","dates","where","the","condition_name","column","is","True",".","}",",","'yearly","'",":","{","'period","'",":","365.25",",","'fourier_order","'",":","10",",","'prior_scale","'",":","0.2",",","'mode","'",":","'additive'","}","}","Note",":","If","there","is","a","conflict","in","built-in","and","custom","seasonality","e.g",".","both","have","``","yearly","''",",","then","custom","seasonality","will","be","used","and","Model","will","throw","a","warning","such","as",":","``","INFO",":","prophet",":","Found","custom","seasonality","named","``","yearly","''",",","disabling","built-in","yearly","seasonality",".","''","kwargs",":","additional","parameters","Other","parameters","are","the","same","as","Prophet","model",",","with","one","exception",":","``","interval_width","``","is","specified","by","``","coverage","``",".","See","source","code","``","__init__","``","for","the","parameter","names",",","and","refer","to","Prophet","documentation","for","a","description",":","*","https",":","\/\/facebook.github.io\/prophet\/docs\/quick_start.html","*","https",":","\/\/github.com\/facebook\/prophet\/blob\/main\/python\/prophet\/forecaster.py","Attributes","--","--","--","--","--","model",":","``","Prophet","``","object","Prophet","model","object","forecast",":","`","pandas.DataFrame","`","Output","of","predict","method","of","``","Prophet","``","."]
docstr: Creates forecast for dates specified in ``X``.
  
  Parameters
  ----------
  X : `pandas.DataFrame`
      Input timeseries with timestamp column and any additional regressors.
      Timestamps are the dates for prediction.
      Value column, if provided in X, is ignored.
  y : ignored
  
  Returns
  -------
  predictions : `pandas.DataFrame`
      Forecasted values for the dates in ``X``. Columns:
  
          * TIME_COL dates
          * PREDICTED_COL predictions
          * PREDICTED_LOWER_COL lower bound of predictions, optional
          * PREDICTED_UPPER_COL upper bound of predictions, optional
          * [other columns], optional
  
      PREDICTED_LOWER_COL and PREDICTED_UPPER_COL are present iff coverage is not None
docstr_tok: ["Creates","forecast","for","dates","specified","in","``","X","``",".","Parameters","--","--","--","--","--","X",":","`","pandas.DataFrame","`","Input","timeseries","with","timestamp","column","and","any","additional","regressors",".","Timestamps","are","the","dates","for","prediction",".","Value","column",",","if","provided","in","X",",","is","ignored",".","y",":","ignored","Returns","--","--","--","-","predictions",":","`","pandas.DataFrame","`","Forecasted","values","for","the","dates","in","``","X","``",".","Columns",":","*","TIME_COL","dates","*","PREDICTED_COL","predictions","*","PREDICTED_LOWER_COL","lower","bound","of","predictions",",","optional","*","PREDICTED_UPPER_COL","upper","bound","of","predictions",",","optional","*","[","other","columns","]",",","optional","PREDICTED_LOWER_COL","and","PREDICTED_UPPER_COL","are","present","iff","coverage","is","not","None"]
code: def predict(self, X, y=None):
      """Creates forecast for dates specified in ``X``.
  
      Parameters
      ----------
      X : `pandas.DataFrame`
          Input timeseries with timestamp column and any additional regressors.
          Timestamps are the dates for prediction.
          Value column, if provided in X, is ignored.
      y : ignored
  
      Returns
      -------
      predictions : `pandas.DataFrame`
          Forecasted values for the dates in ``X``. Columns:
  
              * TIME_COL dates
              * PREDICTED_COL predictions
              * PREDICTED_LOWER_COL lower bound of predictions, optional
              * PREDICTED_UPPER_COL upper bound of predictions, optional
              * [other columns], optional
  
          PREDICTED_LOWER_COL and PREDICTED_UPPER_COL are present iff coverage is not None
      """
      # Returns the cached result if applicable
      cached_predictions = super().predict(X=X)
      if cached_predictions is not None:
          return cached_predictions
  
      # if regressors are not provided, then use time column to predict future. Else, use regressor from predict df
      if self.add_regressor_dict is None:
          predict_columns = [self.time_col_]
      else:
          reg_cols = list(self.add_regressor_dict.keys())
          predict_columns = [self.time_col_] + reg_cols
  
      fut_df = X.reset_index(drop=True)[predict_columns]
      # prophet expects time_col name to be "ds"
      fut_df.rename(columns={self.time_col_: "ds"}, inplace=True)
  
      pred_df = self.model.predict(fut_df)
      self.forecast = pred_df  # This is used by the plot_components
  
      # renames columns to standardized schema
      output_columns = {"ds": TIME_COL, "yhat": PREDICTED_COL}
      if "yhat_lower" in pred_df.columns:
          output_columns["yhat_lower"] = PREDICTED_LOWER_COL
      if "yhat_upper" in pred_df.columns:
          output_columns["yhat_upper"] = PREDICTED_UPPER_COL
  
      predictions = pred_df[output_columns.keys()].rename(
          output_columns, axis=1
      )
      # Caches the predictions
      self.cached_predictions_ = predictions
      return predictions
  
file_path: greykite/greykite/sklearn/estimator/prophet_estimator.py
imports: import sys
  from sklearn.exceptions import NotFittedError
  from sklearn.metrics import mean_squared_error
  from greykite.common.constants import PREDICTED_COL
  from greykite.common.constants import PREDICTED_LOWER_COL
  from greykite.common.constants import PREDICTED_UPPER_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.logging import LoggingLevelEnum
  from greykite.common.logging import log_message
  from greykite.common.logging import pprint
  from greykite.sklearn.estimator.base_forecast_estimator import BaseForecastEstimator
label_desc: Use image node_id 3 for calling the ProphetEstimator obj's underlying member method code with example usage: obj.predict(X, y) and returns: predictions, cached_predictions