Выведите на экран таблицу с важностями признаков:
- Обучите модель с лучшими гиперпараметрами после случайного поиска:
- минимальное количество объектов для разбиения — 9,
- минимальное количество объектов в листе — 10,
- максимальная глубина — 7.
- Сформируйте таблицу важности признаков.
# импортируем библиотеки и объявляем константы
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