Prune deja innecesariamente en sklearn DecisionTreeClassifier

Yo uso sklearn.tree.DecisionTreeClassifier para construir un árbol de decisión. Con la configuración óptima de parámetros, obtengo un árbol que tiene hojas innecesarias (verejempl imagen a continuación: no necesito probabilidades, por lo que los nodos de hoja marcados con rojo son una división innecesaria)

¿Hay alguna biblioteca de terceros para podar estos nodos innecesarios? ¿O un fragmento de código? Podría escribir uno, pero realmente no puedo imaginar que soy la primera persona con este problema ...

Código para replicar:

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: He intentado varias búsquedas de palabras clave y estoy un poco sorprendido de no encontrar nada, ¿realmente no hay poda posterior en general en sklearn?

PPS: en respuesta al posible duplicado: Mientrasla pregunta sugerida podría ayudarme a mí mismo al codificar el algoritmo de poda, responde a una pregunta diferente: quiero deshacerme de las hojas que no cambian la decisión final, mientras que la otra pregunta quiere un umbral mínimo para dividir los nodos.

PPPS: el árbol que se muestra es un ejemplo para mostrar mi problema. Soy consciente del hecho de que las configuraciones de parámetros para crear el árbol son subóptimas. No estoy preguntando sobre la optimización de este árbol específico, necesito hacer una poda posterior para deshacerme de las hojas que podrían ser útiles si uno necesita probabilidades de clase, pero no son útiles si solo está interesado en la clase más probable.

Respuestas a la pregunta(2)

Su respuesta a la pregunta