Отобразите важность признаков на графике. Выведите столбчатый график с помощью seaborn: по оси X будут значения важности, а по оси Y — наименования признаков.
# импортируем библиотеки и объявляем константы
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import seaborn as sns
RANDOM_STATE = 42
# подготавливаем данные заранее созданной функцией
X_train, X_test, y_train, y_test = prepare_data('train_satisfaction.csv')
# инициализируем модель дерева решений с лучшими гиперпараметрами
model = DecisionTreeClassifier(
max_depth=4,
min_samples_leaf=1,
min_samples_split=2,
random_state=RANDOM_STATE
)
# обучаем модель
model.fit(X_train, y_train)
# формируем таблицу важности признаков и сортируем её
feature_importances = pd.DataFrame(
{
'Feature': X_train.columns,
'Importance': model.feature_importances_
}).sort_values('Importance', ascending=False)
plt.figure(figsize=(12, 6))
# Постройте столбчатый график:
# по оси x — важность признака;
# по оси y - его наименование.
ax = sns.barplot(x='Importance', y='Feature', data=feature_importances)
# добавляем названия графика и осей
ax.set_title('Важность признаков', fontsize=16)
ax.set_xlabel('Важность (доля)', fontsize=14)
ax.set_ylabel('Признак', fontsize=14)
# отображаем график
plt.show()
Результат
Оказывается, для пассажиров поезда хорошая уборка важнее, чем, например, включённое питание. Хотелось бы увидеть результаты для пассажиров самолёта: каково это лететь без привычного вопроса «Рыба или курица?»