docstr: Fit on the training data from scratch.
  
  :param data: training data, an dataframe with Td rows,
      and 2 columns, with column 'ds' indicating date and column 'y' indicating target
      and Td is the time dimension
  :param validation_data: validation data, should be the same type as data.
  :param cross_validation: bool, if the eval result comes from cross_validation.
         The value is set to False by default. Setting this option to true may
         significantly slow down the process.
  :param expected_horizon: int or pandas interval str, only effective when
         cross_validation is set to True.
  :return: the evaluation metric value
docstr_tok: ["Fit","on","the","training","data","from","scratch",".",":","param","data",":","training","data",",","an","dataframe","with","Td","rows",",","and","2","columns",",","with","column","'ds","'","indicating","date","and","column","'","y","'","indicating","target","and","Td","is","the","time","dimension",":","param","validation_data",":","validation","data",",","should","be","the","same","type","as","data",".",":","param","cross_validation",":","bool",",","if","the","eval","result","comes","from","cross_validation",".","The","value","is","set","to","False","by","default",".","Setting","this","option","to","true","may","significantly","slow","down","the","process",".",":","param","expected_horizon",":","int","or","pandas","interval","str",",","only","effective","when","cross_validation","is","set","to","True",".",":","return",":","the","evaluation","metric","value"]
code: def fit_eval(self, data, validation_data=None, **config):
      """
      Fit on the training data from scratch.
  
      :param data: training data, an dataframe with Td rows,
          and 2 columns, with column 'ds' indicating date and column 'y' indicating target
          and Td is the time dimension
      :param validation_data: validation data, should be the same type as data.
      :param cross_validation: bool, if the eval result comes from cross_validation.
             The value is set to False by default. Setting this option to true may
             significantly slow down the process.
      :param expected_horizon: int or pandas interval str, only effective when
             cross_validation is set to True.
      :return: the evaluation metric value
      """
      self._fit(data, **config)
  
      # cross_validation
      cross_validation = config.get("cross_validation", False)
      expected_horizon = config.get(
          "expect_horizon", int(0.1 * len(data))
      )
      if cross_validation:
          return self._eval_cross_validation(expected_horizon)
  
      # normal validation process
      if validation_data is not None:
          if self.metric_func:
              val_metric = self.evaluate(
                  target=validation_data, metrics=[self.metric_func]
              )[0].item()
          else:
              val_metric = self.evaluate(
                  target=validation_data, metrics=[self.metric]
              )[0].item()
          if self.metric_func:
              return {self.metric_func.__name__: val_metric}
          else:
              return {self.metric: val_metric}
  
file_path: BigDL/python/chronos/src/bigdl/chronos/model/prophet.py
imports: import json
  import numpy
  from prophet import Prophet
  from prophet.serialize import model_to_json, model_from_json
  from prophet.diagnostics import performance_metrics
  from prophet.diagnostics import cross_validation
  from bigdl.chronos.metric.forecast_metrics import Evaluator
label_desc: Use image node_id 4 for calling the ProphetModel obj's underlying member method code with example usage: obj.fit_eval(data, validation_data) and returns: self, dict, dict