code: def catboost_objective(ml_task, eval_metric):
      objective = "RMSE"
      if ml_task == BINARY_CLASSIFICATION:
          objective = "Logloss"
      elif ml_task == MULTICLASS_CLASSIFICATION:
          objective = "MultiClass"
      else:  # ml_task == REGRESSION
          objective = catboost_eval_metric(REGRESSION, eval_metric)
          if objective in [
              "mse",
              "R2",
              "spearman",
              "pearson",
              "user_defined_metric",
          ]:  # cant optimize them directly
              objective = "RMSE"
      return objective
  
imports: import copy
  import logging
  import os
  import time
  import numpy
  import pandas
  from sklearn.base import ClassifierMixin, RegressorMixin
  from supervised.algorithms.algorithm import BaseAlgorithm
  from supervised.algorithms.registry import BINARY_CLASSIFICATION, MULTICLASS_CLASSIFICATION, REGRESSION, AlgorithmsRegistry
  from supervised.preprocessing.preprocessing_utils import PreprocessingUtils
  from supervised.utils.config import LOG_LEVEL
  from supervised.utils.metric import CatBoostEvalMetricAveragePrecision, CatBoostEvalMetricMSE, CatBoostEvalMetricPearson, CatBoostEvalMetricSpearman, CatBoostEvalMetricUserDefined
  import catboost
  from catboost import CatBoost, CatBoostClassifier, CatBoostRegressor, Pool
label_desc: Use image node_id 2 for calling a global function with example usage: catboost_objective(ml_task, eval_metric) and returns: objective