J'utilise sklearn.tree.DecisionTreeClassifier pour construire un arbre de décision. Avec les réglages optimaux des paramètres, j'obtiens un arbre qui a des feuilles inutiles (cf. exemple image ci-dessous - je n'ai pas besoin de probabilités, donc les nœuds feuilles marqués en rouge sont une division inutile)
Existe-t-il une bibliothèque tierce pour élaguer ces nœuds inutiles ? Ou un extrait de code ? Je pourrais en écrire un, mais je ne pense pas être la première personne à rencontrer ce problème...
Code à répliquer :
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
mdl = DecisionTreeClassifier(max_leaf_nodes=8)
mdl.fit(X,y)
PS : J'ai essayé plusieurs recherches par mots-clés et je suis un peu surpris de ne rien trouver - n'y a-t-il vraiment pas de post-élimination en général dans Sklearn ?
PPS : En réponse à l'éventuel doublon : Alors que la question proposée pourrait m'aider à coder moi-même l'algorithme d'élagage, il répond à une question différente - je veux me débarrasser des feuilles qui ne changent pas la décision finale, alors que l'autre question veut un seuil minimum pour la division des nœuds.
PPPS : L'arbre présenté est un exemple pour montrer mon problème. Je suis conscient du fait que les paramètres utilisés pour créer l'arbre sont sous-optimaux. Je ne demande pas d'optimiser cet arbre spécifique, j'ai besoin de faire un post-élagage pour me débarrasser des feuilles qui pourraient être utiles si on a besoin des probabilités de classe, mais qui ne sont pas utiles si on est seulement intéressé par la classe la plus probable.