docstr: Returns a dictionary of prediction probabilities where the key is
  the model name and the value is the model's prediction probabilities on the data.
  
  Note that this will generally be much faster than calling `self.predict_proba` separately for each model
  because this method leverages the model dependency graph to avoid redundant computation.
  
  Parameters
  ----------
  X : DataFrame, default = None
      The data to predict on.
      If None:
          If self.trainer.has_val, the validation data is used.
          Else, the out-of-fold prediction probabilities are used.
  models : List[str], default = None
      The list of models to get predictions for.
      If None, all models that can infer are used.
  as_pandas : bool, default = True
      Whether to return the output of each model as a pandas object (True) or numpy array (False).
      Pandas object is a DataFrame if this is a multiclass problem or `as_multiclass=True`, otherwise it is a Series.
      If the output is a DataFrame, the column order will be equivalent to `predictor.class_labels`.
  as_multiclass : bool, default = True
      Whether to return binary classification probabilities as if they were for multiclass classification.
          Output will contain two columns, and if `as_pandas=True`, the column names will correspond to the binary class labels.
          The columns will be the same order as `predictor.class_labels`.
      If False, output will contain only 1 column for the positive class (get positive_class name via `predictor.positive_class`).
      Only impacts output for binary classification problems.
  transform_features : bool, default = True
      If True, preprocesses data before predicting with models.
      If False, skips global feature preprocessing.
          This is useful to save on inference time if you have already called `data = predictor.transform_features(data)`.
  inverse_transform : bool, default = True
      If True, will return prediction probabilities in the original format.
      If False (advanced), will return prediction probabilities in AutoGluon's internal format.
  
  Returns
  -------
  Dictionary with model names as keys and model prediction probabilities as values.
code: def predict_proba_multi(
      self,
      X: DataFrame = None,
      models: List[str] = None,
      as_pandas: bool = True,
      as_multiclass: bool = True,
      transform_features: bool = True,
      inverse_transform: bool = True,
  ) -> dict:
      """
      Returns a dictionary of prediction probabilities where the key is
      the model name and the value is the model's prediction probabilities on the data.
  
      Note that this will generally be much faster than calling `self.predict_proba` separately for each model
      because this method leverages the model dependency graph to avoid redundant computation.
  
      Parameters
      ----------
      X : DataFrame, default = None
          The data to predict on.
          If None:
              If self.trainer.has_val, the validation data is used.
              Else, the out-of-fold prediction probabilities are used.
      models : List[str], default = None
          The list of models to get predictions for.
          If None, all models that can infer are used.
      as_pandas : bool, default = True
          Whether to return the output of each model as a pandas object (True) or numpy array (False).
          Pandas object is a DataFrame if this is a multiclass problem or `as_multiclass=True`, otherwise it is a Series.
          If the output is a DataFrame, the column order will be equivalent to `predictor.class_labels`.
      as_multiclass : bool, default = True
          Whether to return binary classification probabilities as if they were for multiclass classification.
              Output will contain two columns, and if `as_pandas=True`, the column names will correspond to the binary class labels.
              The columns will be the same order as `predictor.class_labels`.
          If False, output will contain only 1 column for the positive class (get positive_class name via `predictor.positive_class`).
          Only impacts output for binary classification problems.
      transform_features : bool, default = True
          If True, preprocesses data before predicting with models.
          If False, skips global feature preprocessing.
              This is useful to save on inference time if you have already called `data = predictor.transform_features(data)`.
      inverse_transform : bool, default = True
          If True, will return prediction probabilities in the original format.
          If False (advanced), will return prediction probabilities in AutoGluon's internal format.
  
      Returns
      -------
      Dictionary with model names as keys and model prediction probabilities as values.
      """
      trainer = self.load_trainer()
  
      if models is None:
          models = trainer.get_model_names(can_infer=True)
      if X is not None:
          X_index = copy.deepcopy(X.index) if as_pandas else None
          if transform_features:
              X = self.transform_features(X)
          predict_proba_dict = trainer.get_model_pred_proba_dict(
              X=X, models=models
          )
      else:
          if trainer.has_val:
              # Return validation pred proba
              X = trainer.load_X_val()
              X_index = copy.deepcopy(X.index) if as_pandas else None
              predict_proba_dict = trainer.get_model_pred_proba_dict(
                  X=X, models=models, use_val_cache=True
              )
          else:
              # Return out-of-fold pred proba
              X = trainer.load_X()
              X_index = copy.deepcopy(X.index) if as_pandas else None
              predict_proba_dict = dict()
              for m in models:
                  predict_proba_dict[m] = trainer.get_model_oof(m)
  
      # Inverse Transform labels
      for m, pred_proba in predict_proba_dict.items():
          predict_proba_dict[m] = self._post_process_predict_proba(
              y_pred_proba=pred_proba,
              as_pandas=as_pandas,
              as_multiclass=as_multiclass,
              index=X_index,
              inverse_transform=inverse_transform,
          )
      return predict_proba_dict
  
imports: from __future__ import annotations
  import copy
  import json
  import logging
  import time
  from collections.abc import Iterable
  from typing import List, Union
  import numpy
  import pandas
  from pandas import DataFrame, Series
  from sklearn.metrics import classification_report
  from autogluon.core.constants import AUTO_WEIGHT, BALANCE_WEIGHT, BINARY, MULTICLASS, QUANTILE, REGRESSION
  from autogluon.core.data.label_cleaner import LabelCleaner, LabelCleanerMulticlassToBinary
  from autogluon.core.learner import AbstractLearner
  from autogluon.core.metrics import Scorer, confusion_matrix, get_metric
  from autogluon.core.models.greedy_ensemble.ensemble_selection import EnsembleSelection
  from autogluon.core.utils import augment_rare_classes, compute_weighted_metric, extract_column, get_leaderboard_pareto_frontier, get_pred_from_proba, get_pred_from_proba_df, infer_problem_type
  from autogluon.features.generators import PipelineFeatureGenerator
label_desc: Use image node_id 15 for calling the AbstractTabularLearner obj's underlying member method code with example usage: obj.predict_proba_multi(X, models, as_pandas, as_multiclass, transform_features, inverse_transform) and returns: predict_proba_dict