Как включить имена объектов в функцию plot_tree из библиотеки XGBoost? - PullRequest
0 голосов
/ 12 февраля 2020

Я использовал библиотеку XGBoost для разработки бинарной модели классификации. Изучив мою модель, я заинтересован в визуализации отдельных деревьев, чтобы лучше понять мои предсказания моделей.

Для этого XGBoost предоставляет функцию plot_tree , но показывает только целочисленный индекс функции. Вот пример одного из моих деревьев:

Как включить имя функции в это изображение, а не индекс функции (f28)?

1 Ответ

0 голосов
/ 12 февраля 2020

Функция plot_tree в xgboost имеет аргумент fmap, который является путем к файлу «карты объектов»; он содержит отображение индекса объекта на имя объекта.

Документация по файлу карты объектов является разреженной, но это файл с разделителями табуляции, где первый столбец - это индексы объектов (начиная с 0 и заканчивая количеством объектов), а второй столбец - объект. имя и последний столбец - индикатор, показывающий тип элемента (q = количественный элемент, i = двоичный элемент).

Пример файла feature_map.txt:

0    feature_name_0    q
1    feature_name_1    i
2    feature_name_2    q
…          …           … 

С этим После этого в файле с разделителями табуляции вы можете построить свое дерево из обученного экземпляра модели:

import xgboost
model = xgboost.XGBClassifier()

# train the model
model.fit(X, y)

# plot the decision tree, providing path to feature map file

xgboost.plot_tree(model,  num_trees=0, fmap='feature_map.txt')

При использовании этой функции отображается график:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...