Подберите лучшие значения гиперпараметров с помощью случайного поиска. Создайте экземпляр класса для случайного поиска, используйте метрику ROC-AUC.

# импортируем библиотеки и объявляем константы
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import RandomizedSearchCV

RANDOM_STATE = 42

# подготавливаем данные заранее созданной функцией
# в код добавили кодирование ранговых и неранговых переменных
X_train, X_test, y_train, y_test = prepare_data('railway_full.csv')

# инициализируем модель дерева решений
model = DecisionTreeClassifier(random_state=RANDOM_STATE)

# создаём словарь с гиперпараметрами
parameters = {
    'min_samples_split': range(2, 11),
    'min_samples_leaf': range(1, 11),
    'max_depth': range(2, 11),
}

# инициализируйте класс для случайного поиска гиперпараметров 
rs = RandomizedSearchCV(model,
                       parameters,
                       scoring='roc_auc',
                       random_state=RANDOM_STATE,
                       n_jobs=-1
                       )

# запускаем поиск гиперпараметров
rs.fit(X_train, y_train)

# выводим лучшую метрику и гиперпараметры
print(f'Best score: {rs.best_score_}, best params: {rs.best_params_}')

Результат
Best score: 1.0, best params: {'min_samples_split': 6, 'min_samples_leaf': 8, 'max_depth': 4}