Á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.


Importar bibliotecas

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

pip install scikit-learn

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

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import 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:

# Cargar el conjunto de datos Iris
iris = load_iris()
X = iris.data
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())

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:

# 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)

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:

# Crear el modelo de árbol de decisión
tree_classifier = DecisionTreeClassifier(random_state=42)

# Entrenar el modelo con los datos de entrenamiento
tree_classifier.fit(X_train, y_train)

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:

# Realizar predicciones en el conjunto de prueba
y_pred = tree_classifier.predict(X_test)

# 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:

# Visualizar el árbol de decisión
plt.figure(figsize=(12, 8))
plot_tree(tree_classifier, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()

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.