web-dev-qa-db-fra.com

Tracer un seul arbre de décision XGBoost

J'utilise la méthode sur https://machinelearningmastery.com/visualize-gradient-boosting-decision-trees-xgboost-python/ pour tracer un arbre de décision XGBoost

from numpy import loadtxt
from xgboost import XGBClassifier
from xgboost import plot_tree
import matplotlib.pyplot as plt
# load data
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")
# split data into X and y
X = dataset[:,0:8]
y = dataset[:,8]
# fit model no training data
model = XGBClassifier()
model.fit(X, y)
# plot single tree
plot_tree(model)
plt.show()

Comme j'ai 150 fonctionnalités, l'intrigue semble assez petite pour tous les points de partage, comment en dessiner un clair ou l'enregistrer à un endroit local ou toute autre manière/idée pourrait clairement montrer que cet "arbre" ​​est très apprécié enter image description here

6
Leon

J'ai eu le même problème récemment et la seule façon que j'ai trouvée est d'essayer des tailles de figures différentes (cela peut toujours être bleuâtre avec de grandes figures. Par exemple, pour tracer le 4ème arbre, utilisez:

fig, ax = plt.subplots(figsize=(30, 30))
xgb.plot_tree(model, num_trees=4, ax=ax)
plt.show()

Pour l'enregistrer, vous pouvez faire

plt.savefig("temp.pdf")

De plus, chaque arbre sépare deux classes, vous avez donc autant d'arbres que de classes.

3
Serk

Pour ajouter à la réponse de Serk, vous pouvez également redimensionner la figure avant de l'afficher:

# ...
plot_tree(model)
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
plt.show()
2
Learning is a mess

J'ai trouvé cette solution sur github, ce qui donne également de meilleures images avec l'inconvénient que vous devez ouvrir le fichier .png après.

xgb.plot_tree(bst, num_trees=2)
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(150, 100)
fig.savefig('tree.png')
0
confused_zebra

Vous pouvez essayer d'utiliser la méthode to_graphviz à la place - pour moi, cela donne une image beaucoup plus claire.

xgb.to_graphviz (xg_reg, num_trees = 0, rankdir = 'LR')

Cependant, vous aurez probablement des problèmes avec la taille de cette sortie.

Dans ce cas, procédez comme suit: Comment puis-je spécifier la taille d'une représentation graphique de l'arbre de décision

0
morienor