code: def predict_model(
      estimator,
      fh=None,
      X=None,
      return_pred_int=False,
      alpha: Optional[float] = None,
      coverage: Union[float, List[float]] = 0.9,
      round: int = 4,
      verbose: bool = True,
  ) -> pd.DataFrame:
      """
      This function forecast using a trained model. When ``fh`` is None,
      it forecasts using the same forecast horizon used during the
      training.
  
  
      Example
      -------
      >>> from pycaret.datasets import get_data
      >>> airline = get_data('airline')
      >>> from pycaret.time_series import *
      >>> exp_name = setup(data = airline,  fh = 12)
      >>> arima = create_model('arima')
      >>> pred_holdout = predict_model(arima)
      >>> pred_unseen = predict_model(finalize_model(arima), fh = 24)
  
  
      estimator: sktime compatible object
          Trained model object
  
  
      fh: int, default = None
          Number of points from the last date of training to forecast.
          When fh is None, it forecasts using the same forecast horizon
          used during the training.
  
  
      X: pd.DataFrame, default = None
          Exogenous Variables to be used for prediction.
          Before finalizing the estimator, X need not be passed even when the
          estimator is built using exogenous variables (since this is taken
          care of internally by using the exogenous variables from test split).
          When estimator has been finalized and estimator used exogenous
          variables, then X must be passed.
  
  
      return_pred_int: bool, default = False
          When set to True, it returns lower bound and upper bound
          prediction interval, in addition to the point prediction.
  
  
      alpha: Optional[float], default = None
          The alpha (quantile) value to use for the point predictions. Refer to
          the "point_alpha" description in the setup docstring for details.
  
  
      coverage: Union[float, List[float]], default = 0.9
          The coverage to be used for prediction intervals. Refer to the "coverage"
          description in the setup docstring for details.
  
  
      round: int, default = 4
          Number of decimal places to round predictions to.
  
  
      verbose: bool, default = True
          When set to False, holdout score grid is not printed.
  
  
      Returns:
          pandas.DataFrame
  
  
      """
  
      experiment = _CURRENT_EXPERIMENT
      if experiment is None:
          experiment = _EXPERIMENT_CLASS()
  
      return experiment.predict_model(
          estimator=estimator,
          fh=fh,
          X=X,
          return_pred_int=return_pred_int,
          alpha=alpha,
          coverage=coverage,
          round=round,
          verbose=verbose,
      )
  
imports: import logging
  import os
  from typing import TYPE_CHECKING, Any, BinaryIO, Callable, Dict, List, Optional, Tuple, Union
  import numpy
  import pandas
  from pycaret.internal.parallel.parallel_backend import ParallelBackend
  from pycaret.time_series.forecasting.oop import TSForecastingExperiment
  from pycaret.utils.generic import check_if_global_is_not_none
label_desc: Use image node_id 9 for calling a global function with example usage: predict_model(estimator, fh, X, return_pred_int, alpha, coverage, round, verbose) and returns: experiment