code: def get_additional_metrics(self):
      if self._additional_metrics is None:
          logger.debug("Compute additional metrics")
          # 'target' - the target after processing used for model training
          # 'prediction' - out of folds predictions of the model
          oof_predictions = self.get_out_of_folds()
          prediction_cols = [
              c for c in oof_predictions.columns if "prediction" in c
          ]
          target_cols = [
              c for c in oof_predictions.columns if "target" in c
          ]
  
          target = oof_predictions[target_cols]
  
          oof_preds = None
          if self._ml_task == MULTICLASS_CLASSIFICATION:
              oof_preds = self.preprocessings[0].prepare_target_labels(
                  oof_predictions[prediction_cols].values
              )
          else:
              oof_preds = oof_predictions[prediction_cols]
  
          sample_weight = None
          if "sample_weight" in oof_predictions.columns:
              sample_weight = oof_predictions["sample_weight"]
  
          sensitive_features = None
          sensitive_cols = [
              c for c in oof_predictions.columns if "sensitive" in c
          ]
          if sensitive_cols:
              sensitive_features = oof_predictions[sensitive_cols]
  
          self._additional_metrics = AdditionalMetrics.compute(
              target,
              oof_preds,
              sample_weight,
              self._ml_task,
              sensitive_features,
              self._fairness_metric
              if self._ml_task != REGRESSION
              else f"{self._fairness_metric}@{self.get_metric_name()}",
              self._fairness_threshold,
              self._privileged_groups,
              self._underprivileged_groups,
              self._fairness_optimization,
          )
          if self._ml_task == BINARY_CLASSIFICATION:
              self._threshold = float(
                  self._additional_metrics["threshold"]
              )
      return self._additional_metrics
  
imports: import copy
  import gc
  import json
  import logging
  import os
  import sys
  import time
  import uuid
  import zipfile
  import numpy
  import pandas
  from supervised.algorithms.factory import AlgorithmFactory
  from supervised.algorithms.registry import BINARY_CLASSIFICATION, MULTICLASS_CLASSIFICATION, REGRESSION, AlgorithmsRegistry
  from supervised.callbacks.callback_list import CallbackList
  from supervised.exceptions import AutoMLException
  from supervised.preprocessing.exclude_missing_target import ExcludeRowsMissingTarget
  from supervised.preprocessing.preprocessing import Preprocessing
  from supervised.utils.additional_metrics import AdditionalMetrics
  from supervised.utils.config import LOG_LEVEL
  from supervised.utils.metric import Metric
  from supervised.validation.validation_step import ValidationStep
  from supervised.utils.jsonencoder import MLJSONEncoder
  import joblib
  import optuna
  from supervised.tuner.optuna.tuner import OptunaTuner
  from supervised.utils.config import mem
  from supervised.utils.learning_curves import LearningCurves
label_desc: Use image node_id 16 for calling the ModelFramework obj's underlying member method code with example usage: obj.get_additional_metrics() and returns: self