class_docstr: Example:
      >>> import numpy as np
      >>> model = TCMFForecaster()
      >>> fit_params = dict(val_len=12,
                         start_date="2020-1-1",
                         freq="5min",
                         y_iters=1,
                         init_FX_epoch=1,
                         max_FX_epoch=1,
                         max_TCN_epoch=1,
                         alt_iters=2)
      >>> ndarray_input = {'id': np.arange(300), 'y': np.random.rand(300, 480)}
      >>> model.fit(ndarray_input, fit_params)
      >>> horizon = np.random.randint(1, 50)
      >>> yhat = model.predict(horizon=horizon)
      >>> model.save({tempdirname})
      >>> loaded_model = TCMFForecaster.load({tempdirname}, is_xshards_distributed=False)
      >>> data_new = np.random.rand(300, horizon)
      >>> model.evaluate(target_value=dict({"y": data_new}), metric=['mse'])
      >>> model.fit_incremental({"y": data_new})
      >>> yhat_incr = model.predict(horizon=horizon)
class_docstr_tok: ["Example",":",">",">",">","import","numpy","as","np",">",">",">","model","=","TCMFForecaster","(",")",">",">",">","fit_params","=","dict","(","val_len=12",",","start_date=","''","2020-1-1","''",",","freq=","''","5min","''",",","y_iters=1",",","init_FX_epoch=1",",","max_FX_epoch=1",",","max_TCN_epoch=1",",","alt_iters=2",")",">",">",">","ndarray_input","=","{","'id","'",":","np.arange","(","300",")",",","'","y","'",":","np.random.rand","(","300",",","480",")","}",">",">",">","model.fit","(","ndarray_input",",","fit_params",")",">",">",">","horizon","=","np.random.randint","(","1",",","50",")",">",">",">","yhat","=","model.predict","(","horizon=horizon",")",">",">",">","model.save","(","{","tempdirname","}",")",">",">",">","loaded_model","=","TCMFForecaster.load","(","{","tempdirname","}",",","is_xshards_distributed=False",")",">",">",">","data_new","=","np.random.rand","(","300",",","horizon",")",">",">",">","model.evaluate","(","target_value=dict","(","{","``","y","''",":","data_new","}",")",",","metric=","[","'mse","'","]",")",">",">",">","model.fit_incremental","(","{","``","y","''",":","data_new","}",")",">",">",">","yhat_incr","=","model.predict","(","horizon=horizon",")"]
docstr: Save the forecaster.
  
  :param path: Path to target saved file.
docstr_tok: ["Save","the","forecaster",".",":","param","path",":","Path","to","target","saved","file","."]
code: def save(self, path):
      """
      Save the forecaster.
  
      :param path: Path to target saved file.
      """
      if self.internal is None:
          raise Exception("You should run fit before calling save()")
      else:
          self.internal.save(path)
  
file_path: analytics-zoo/pyzoo/zoo/chronos/forecaster/tcmf_forecaster.py
imports: from zoo.chronos.model.tcmf_model import TCMFNdarrayModelWrapper, TCMFXshardsModelWrapper
  from zoo.orca.data import SparkXShards
  from zoo.chronos.forecaster.abstract import Forecaster
label_desc: Use image node_id 6 for calling the TCMFForecaster obj's underlying member method code with example usage: obj.save(path) without return types