code: def setup(
      self,
      model_name: str,
      model_path: str,
      predict_column_rename: str,
      time_column_rename: str,
      id_column_rename: str,
      horizon: int,
      library: str,
      conf: int,
  ):
      self.library = library
      if "neuralforecast" in self.library:
          from neuralforecast import NeuralForecast
  
          loaded_model = NeuralForecast.load(path=model_path)
          self.model_name = (
              model_name[4:] if "Auto" in model_name else model_name
          )
      else:
          with open(model_path, "rb") as f:
              loaded_model = pickle.load(f)
          self.model_name = model_name
      self.model = loaded_model
      self.predict_column_rename = predict_column_rename
      self.time_column_rename = time_column_rename
      self.id_column_rename = id_column_rename
      self.horizon = int(horizon)
      self.library = library
      self.suggestion_dict = {
          1: "Predictions are flat. Consider using LIBRARY 'neuralforecast' for more accrate predictions.",
      }
      self.conf = conf
      self.hypers = None
      self.rmse = None
      if os.path.isfile(model_path + "_rmse"):
          with open(model_path + "_rmse", "r") as f:
              self.rmse = float(f.readline())
              if "arima" in model_name.lower():
                  self.hypers = "p,d,q: " + f.readline()
  
file_path: evadb/evadb/functions/forecast.py
imports: import os
  import pickle
  import pandas
  from evadb.functions.abstract.abstract_function import AbstractFunction
  from evadb.functions.decorators.decorators import setup
label_desc: Use image node_id 2 for calling the ForecastModel obj's underlying member method code with example usage: obj.setup(model_name, model_path, predict_column_rename, time_column_rename, id_column_rename, horizon, library, conf) without return types