Ejemplo de árbol de decisión

Probemos el clasificador basado en árbol de decisión de Scikit-Learn con el dataset Iris:

iris = sns.load_dataset("iris")
iris["label"] = iris.species.astype("category").cat.codes

Téngase en cuenta que la implementación del árbol de decisión de Scikit-Learn permite su entrenamiento usando como etiquetas valores no numéricos. En nuestro caso estamos codificando la especie para poder mostrar las fronteras de decisión. Y por este mismo motivo vamos a entrenarlo solo con dos características predictivas, tal y como hemos hecho en secciones anteriores:

X = iris[["sepal_length", "sepal_width"]]
y = iris.label

Importamos la clase DecisionTreeClassifier, la instanciamos y entrenamos el modelo:

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X.values, y)

Ejemplo de árbol de decisión

Visualicemos las fronteras de decisión:

show_boundaries(model, X.values, None, y, None, iris.species.unique())
Ejemplo de árbol de decisión

El algoritmo claramente ha sido sobreentrenado. Podemos visualizar el árbol usando la función plot_tree() que se encuentra en la misma librería:

from sklearn.tree import plot_tree
fig, ax = plt.subplots(figsize = (14, 10))
plot_tree(model, filled = True, feature_names = X.columns)
plt.show()
Ejemplo de árbol de decisión

Efectivamente, podemos ver que el árbol ha crecido sin límite. En la práctica lo ha hecho hasta que ha clasificado correctamente todas las muestras.