code: def __init__(
      self,
      tuner_params,
      algorithms,
      ml_task,
      eval_metric,
      validation_strategy,
      explain_level,
      data_info,
      golden_features,
      features_selection,
      train_ensemble,
      stack_models,
      adjust_validation,
      boost_on_errors,
      kmeans_features,
      mix_encoding,
      optuna_time_budget,
      optuna_init_params,
      optuna_verbose,
      n_jobs,
      seed,
      fairness_metric=None,
      fairness_threshold=None,
      privileged_groups=[],
      underprivileged_groups=[],
  ):
      logger.debug("MljarTuner.__init__")
      self._start_random_models = tuner_params.get(
          "start_random_models", 5
      )
      self._hill_climbing_steps = tuner_params.get(
          "hill_climbing_steps", 3
      )
      self._top_models_to_improve = tuner_params.get(
          "top_models_to_improve", 3
      )
      self._algorithms = algorithms
      self._ml_task = ml_task
      self._validation_strategy = validation_strategy
      self._explain_level = explain_level
      self._data_info = data_info
      self._golden_features = golden_features
      self._features_selection = features_selection
      self._train_ensemble = train_ensemble
      self._stack_models = stack_models
      self._adjust_validation = adjust_validation
      self._boost_on_errors = boost_on_errors
      self._kmeans_features = kmeans_features
      self._mix_encoding = mix_encoding
      self._optuna_time_budget = optuna_time_budget
      self._optuna_init_params = optuna_init_params
      self._optuna_verbose = optuna_verbose
      self._eval_metric = eval_metric
      self._n_jobs = n_jobs
      self._fairness_metric = fairness_metric
      self._fairness_threshold = fairness_threshold
      self._privileged_groups = privileged_groups
      self._underprivileged_groups = underprivileged_groups
      self._seed = seed
      self._unique_params_keys = []
  
imports: import copy
  import json
  import logging
  import os
  import numpy
  import pandas
  from sklearn.preprocessing import OneHotEncoder
  from supervised.algorithms.catboost import catboost_eval_metric
  from supervised.algorithms.lightgbm import lightgbm_eval_metric
  from supervised.algorithms.registry import BINARY_CLASSIFICATION, MULTICLASS_CLASSIFICATION, REGRESSION, AlgorithmsRegistry
  from supervised.algorithms.xgboost import xgboost_eval_metric
  from supervised.preprocessing.label_encoder import LabelEncoder
  from supervised.preprocessing.preprocessing_categorical import PreprocessingCategorical
  from supervised.tuner.hill_climbing import HillClimbing
  from supervised.tuner.preprocessing_tuner import PreprocessingTuner
  from supervised.tuner.random_parameters import RandomParameters
  from supervised.utils.config import LOG_LEVEL
  from supervised.utils.utils import dump_data, load_data
label_desc: Use image node_id 1 to create a new MljarTuner object  with example: obj = MljarTuner(tuner_params, algorithms, ml_task, eval_metric, validation_strategy, explain_level, data_info, golden_features, features_selection, train_ensemble, stack_models, adjust_validation, boost_on_errors, kmeans_features, mix_encoding, optuna_time_budget, optuna_init_params, optuna_verbose, n_jobs, seed, fairness_metric, fairness_threshold, privileged_groups, underprivileged_groups)