Árbol de decisión en Python

cómo crear árboles de decisión en Python utilizando la biblioteca scikit-learn . Los árboles de decisión son una técnica de aprendizaje supervisado ampliamente utilizada en la clasificación y regresión. En este tutorial, aprenderás cómo crear, entrenar y visualizar un árbol de decisión.

En Árbol de decisión en Python verás el concepto explicado en lenguaje claro y un ejemplo que puedes ejecutar en el editor de The Data Schools.

Modifica el código del ejemplo antes de pasar a la siguiente lección: la experimentación fija mejor el aprendizaje que leer pasivamente.


Importar bibliotecas

Primero, asegúrate de tener instaladas las bibliotecas necesarias. Si aún no tienes scikit-learn , puedes instalarlo usando pip :

Ejemplo

    pip install scikit-learn

A continuación, importa las bibliotecas que necesitarás en tu código Python:

Ejemplo

    import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import <span class="class">DecisionTreeClassifier</span>, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accurfrom sklearn.metrics import accuracy_score
import matimport matplotlib.pyplot as plt
  

Cargar y explorar los datos

En este ejemplo, usaremos el conjunto de datos Iris, que es un conjunto de datos muy conocido para la clasificación. Carguemos los datos y exploremos su estructura:

Ejemplo

    y = iris.target
# Crear un DataFrame para explorar los datos
df = pd.DataFrame(data=np.c_[iris['data'], iris['target']], columns=iris['feature_names'] + ['target'])
# Visualizar las primeras filas del DataFrame
print(df.head())
# Visualizar las primeras filas del DataFrame
print(df.head())
  

Dividir los datos en conjuntos de entrenamiento y prueba

Para evaluar el rendimiento del árbol de decisión, dividiremos el conjunto de datos en conjuntos de entrenamiento y prueba:

Ejemplo

    # Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(y)
  

Crear y entrenar el árbol de decisión

Ahora crearemos un modelo de árbol de decisión y lo entrenaremos con los datos de entrenamiento:

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
modelo = DecisionTreeClassifier(random_state=42).fit(X_train, y_train)
print(modelo.score(X_test, y_test))
  

Realizar predicciones y evaluar el modelo

Una vez que el modelo esté entrenado, podemos usarlo para hacer predicciones en el conjunto de prueba y evaluar su rendimiento:

Ejemplo

    # Realizar predicciones en el conjunto de prueba
y_pred = tree_classifier.predict(X_test)
# Calcu
# Calcular la precisión del modelo
accuracy = accuracy_score(y_test, y_pred)
print("Precisión del modelo: {accuracy * 100:.2f}%")
  

Visualizar el árbol de decisión

Una de las ventajas de los árboles de decisión es que son interpretables. Podemos visualizar el árbol de decisión para comprender cómo toma decisiones:

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
X, y = load_iris(return_X_y=True)
modelo = DecisionTreeClassifier(max_depth=3, random_state=0).fit(X, y)
print(modelo.predict(X[:3]))
  

Ajustar hiperparámetros (opcional)

Puedes ajustar los hiperparámetros del árbol de decisión, como la profundidad máxima del árbol, para mejorar el rendimiento o evitar el sobreajuste. Experimenta con diferentes valores y observa cómo afecta el rendimiento.

¡Eso es todo! Has creado, entrenado, evaluado y visualizado un árbol de decisión en Python utilizando scikit-learn . Puedes aplicar esta técnica a otros conjuntos de datos y problemas de clasificación.

Practica Árbol de decisión en Python en el editor

Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.

Ejercicio: Calcular accuracy

En este ejemplo, usaremos el conjunto de datos Iris, que es un conjunto de datos muy conocido para la clasificación. Carguemos los datos y exploremos su estructura.

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
modelo = DecisionTreeClassifier(random_state=42).fit(X_train, y_train)
print(accuracy_score(y_test, modelo.predict(X_test)))
  
Abrir en editor

Ejercicio: Árbol de decisión

Para evaluar el rendimiento del árbol de decisión, dividiremos el conjunto de datos en conjuntos de entrenamiento y prueba.

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
X, y = load_iris(return_X_y=True)
modelo = DecisionTreeClassifier(max_depth=3, random_state=0).fit(X, y)
print(modelo.predict(X[:3]))
  
Abrir en editor

Ejercicio: Árbol de decisión (2)

Ahora crearemos un modelo de árbol de decisión y lo entrenaremos con los datos de entrenamiento.

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
X, y = load_iris(return_X_y=True)
print(DecisionTreeClassifier().fit(X, y).get_depth())
  
Abrir en editor

Ejercicio: Dividir train/test

Una vez que el modelo esté entrenado, podemos usarlo para hacer predicciones en el conjunto de prueba y evaluar su rendimiento.

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
print([len(a) for a in train_test_split(X, y, test_size=0.25, random_state=1)[:2]])
  
Abrir en editor

Ejercicio: Árbol de decisión (3)

Una de las ventajas de los árboles de decisión es que son interpretables. Podemos visualizar el árbol de decisión para comprender cómo toma decisiones.

Ejemplo

    from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
X, y = load_iris(return_X_y=True)
print(DecisionTreeClassifier(random_state=1).fit(X, y).feature_importances_.round(3))
  
Abrir en editor