5.1. Como entrenar un modelo de árbol de decisiones

 Como entrenar un modelo de árbol de decisiones 

Link de dataset en Google Colab de los códigos 

Entrenar un árbol de decisiones implica seguir algunos pasos básicos utilizando una biblioteca como Scikit-learn en Python.

Paso 1: Preparar tus datos

Primero, necesitas tener tus datos en un formato adecuado. Supongamos que tienes un conjunto de datos llamado X que contiene tus características (atributos) y un vector y con las etiquetas o resultados que quieres predecir.

Paso 2: Importar la clase del árbol de decisiones y dividir los datos

Scikit-learn proporciona una implementación de árboles de decisiones. Importa la clase DecisionTreeClassifier para clasificación o DecisionTreeRegressor para regresión, dependiendo de tu problema.

from sklearn.tree import DecisionTreeClassifier  # Para clasificación
from sklearn.tree import DecisionTreeRegressor  # Para regresión
from sklearn.model_selection import train_test_split

# Supongamos que tienes tus datos en 'X' (características) y 'y' (etiquetas)

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

Paso 3: Crear y entrenar el modelo

Utiliza la clase importada para crear un modelo y luego ajusta (entrena) ese modelo con tus datos de entrenamiento.

# Crear el modelo
modelo_arbol = DecisionTreeClassifier(max_depth=3)  # Puedes ajustar la profundidad del árbol u otros hiperparámetros

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

Paso 4: Evaluar el modelo

Una vez que el modelo ha sido entrenado, es importante evaluar su rendimiento en datos que no ha visto antes, es decir, los datos de prueba.

from sklearn.metrics import accuracy_score, mean_squared_error

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

# Evaluar la precisión (para clasificación) o el error (para regresión)
precision = accuracy_score(y_test, y_pred)  # Para clasificación
error = mean_squared_error(y_test, y_pred)  # Para regresión

Paso 5: Interpretar el modelo

Además, puedes visualizar el árbol de decisiones para entender cómo se toman las decisiones.

import matplotlib.pyplot as plt
from sklearn.tree import plot_tree

plt.figure(figsize=(12, 8))
plot_tree(modelo_arbol, feature_names=X.columns, class_names=modelo_arbol.classes_, filled=True)
plt.title("Árbol de Decisiones")
plt.show()

Estos pasos básicos te permitirán entrenar un modelo de árbol de decisiones. Recuerda que ajustar los hiperparámetros puede ser esencial para obtener un modelo óptimo. Además, la preparación de datos y la validación cruzada pueden mejorar la robustez y el rendimiento general del modelo.

Ejemplo N° 1

Vamos a simular un conjunto de datos ficticios que representen posibles características y un objetivo que podría estar relacionado con la evaluación del desempeño de docentes en innovación educativa.

Paso 1: Generar datos ficticios

Supongamos que tenemos un conjunto de datos que incluye características como "Experiencia", "Capacitación en TIC", "Participación en Proyectos Innovadores" y un objetivo como "Evaluación del Desempeño" que indica si un docente es "Bueno", "Regular" o "Necesita Mejoras"

import pandas as pd
import numpy as np

np.random.seed(42)

# Generar datos ficticios
num_docentes = 500

experiencia = np.random.randint(1, 30, num_docentes)
capacitacion_tic = np.random.randint(0, 2, num_docentes)  # 0: No, 1: Sí
proyectos_innovadores = np.random.randint(0, 3, num_docentes)  # Número de proyectos (0, 1, 2)

evaluacion_desempenio = np.random.choice(['Bueno', 'Regular', 'Necesita Mejoras'], num_docentes)

datos = pd.DataFrame({
    'Experiencia': experiencia,
    'Capacitacion_TIC': capacitacion_tic,
    'Proyectos_Innovadores': proyectos_innovadores,
    'Evaluacion_Desempenio': evaluacion_desempenio
})


Paso 2: Preparar datos y entrenar el modelo

Dividiremos los datos en características (X) y la variable objetivo (y). Luego, crearemos y entrenaremos el modelo del árbol de decisiones.

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# Separar características y variable objetivo
X = datos.drop('Evaluacion_Desempenio', axis=1)
y = datos['Evaluacion_Desempenio']

# Dividir datos en 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 modelo de árbol de decisiones
modelo_arbol = DecisionTreeClassifier(max_depth=3, random_state=42)
modelo_arbol.fit(X_train, y_train)

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

# Evaluar la precisión del modelo
precision = accuracy_score(y_test, y_pred)
print(f"Precisión del modelo: {precision}")

# Mostrar el reporte de clasificación
print(classification_report(y_test, y_pred))


Precisión del modelo: 0.32 precision recall f1-score support Bueno 0.27 0.12 0.17 32 Necesita Mejoras 0.30 0.19 0.24 31 Regular 0.34 0.59 0.43 37 accuracy 0.32 100 macro avg 0.30 0.30 0.28 100 weighted avg 0.30 0.32 0.29 100


Paso 3: Interpretar el modelo

Finalmente, podemos interpretar visualmente el árbol de decisiones para entender cómo se toman las decisiones basadas en las características.

import matplotlib.pyplot as plt
from sklearn.tree import plot_tree

plt.figure(figsize=(12, 8))
plot_tree(modelo_arbol, feature_names=X.columns, class_names=modelo_arbol.classes_, filled=True)
plt.title("Árbol de Decisiones para Evaluación del Desempeño Docente")
plt.show()


Link de dataset en Google Colab de los códigos 



Vamos a mejorar el ejemplo anterior con los cinco pasos para entrenar un modelo de árbol de decisiones en el contexto de la innovación educativa y el desempeño docente:


Paso 1: Importar librerías y cargar datos

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import matplotlib.pyplot as plt

# Cargar los datos (reemplaza 'datos_educativos.csv' con el nombre de tu archivo)
file_path = 'datos_educativos.csv'
datos = pd.read_csv(file_path)

# Visualizar las primeras filas para entender la estructura de los datos
print(datos.head())

Paso 2: Preparar datos y dividirlos en conjuntos de entrenamiento y prueba


# Separar características y variable objetivo
X = datos.drop('Evaluacion_Desempenio', axis=1)
y = datos['Evaluacion_Desempenio']

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

Paso 3: Crear y entrenar el modelo de árbol de decisiones


# Crear y entrenar el modelo
modelo_arbol = DecisionTreeClassifier(max_depth=3, random_state=42)
modelo_arbol.fit(X_train, y_train)


DecisionTreeClassifier(max_depth=3, random_state=42)

Paso 4: Evaluar el modelo


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

# Evaluar la precisión del modelo
precision = accuracy_score(y_test, y_pred)
print(f"Precisión del modelo: {precision}")

# Mostrar el reporte de clasificación
print(classification_report(y_test, y_pred))


Precisión del modelo: 0.32 precision recall f1-score support Bueno 0.27 0.12 0.17 32 Necesita Mejoras 0.30 0.19 0.24 31 Regular 0.34 0.59 0.43 37 accuracy 0.32 100 macro avg 0.30 0.30 0.28 100 weighted avg 0.30 0.32 0.29 100

Paso 5: Interpretar el modelo (Visualización del árbol)

plt.figure(figsize=(12, 8))
plot_tree(modelo_arbol, feature_names=X.columns, class_names=modelo_arbol.classes_, filled=True)
plt.title("Árbol de Decisiones para Evaluación del Desempeño Docente")
plt.show()



Link de dataset en Google Colab de los códigos 




Comentarios

Entradas populares de este blog

5. Árboles de Decisión

4. Regresión Logística (Aprendizaje Supervisado)