Выведите на экран таблицу с важностями признаков:

  1. Обучите модель с лучшими гиперпараметрами после случайного поиска:
  • минимальное количество объектов для разбиения — 9,
  • минимальное количество объектов в листе — 10,
  • максимальная глубина — 7.
  1. Сформируйте таблицу важности признаков.
# импортируем библиотеки и объявляем константы
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier

RANDOM_STATE = 42

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

# инициализируйте модель дерева решений с лучшими гиперпараметрами
model = DecisionTreeClassifier(min_samples_split = 9,
                               min_samples_leaf = 10,
                               max_depth = 7,
                               random_state = RANDOM_STATE
                              )

# обучаем модель
model.fit(X_train, y_train)

# сформируйте таблицу важности признаков
feature_importances = pd.DataFrame(
    {
        'Feature': X_train.columns,
        'Importance': model.feature_importances_
    })

# сортируем таблицу по важности — от большей к меньшей
print(feature_importances.sort_values('Importance', ascending=False))

Результат
                                             Feature  Importance
6                             Оценка качества уборки    0.401948
10  Оценка комфортности времени отправления/прибытия    0.157807
5                          Оценка комфортности места    0.106883
17                     Оценка качества питания_плохо    0.078813
7                Оценка качества обслуживания в пути    0.074778
9                               Оценка качества wifi    0.066292
2                              Покупка билета онлайн    0.026578
1                                         Расстояние    0.023308
13                        Путешествует по работе_нет    0.020470
16               Оценка качества питания_отсутствует    0.013924
0                                            Возраст    0.011451
3                                   Питание включено    0.007637
8          Оценка комфортности покупки билета онлайн    0.005522
11                                           Пол_муж    0.001673
4                                       Наличие wifi    0.001540
12                         Путешествует с детьми_нет    0.001375
14                                      Тип_плацкарт    0.000000
15                                            Тип_св    0.000000
18                    Оценка качества питания_хорошо    0.000000