Ejercicio: Clasificar estudiantes con un árbol de decisión

Este ejercicio utiliza un árbol de decisión para predecir si un estudiante aprobará un examen basándonos en dos características: horas de estudio y asistencia a clase.

Código en Python

Ver en Colab ➜

# Importar bibliotecas necesarias
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Crear un conjunto de datos ficticio
data = {
    "Horas de Estudio": [2, 3, 1, 5, 7, 6, 8, 3, 4, 5],
    "Asistencia": [1, 0, 1, 1, 1, 0, 1, 0, 1, 1],  # 1 = Asistió, 0 = No asistió
    "Aprobó": [0, 0, 0, 1, 1, 0, 1, 0, 1, 1]  # 1 = Aprobó, 0 = No aprobó
}

# Convertir datos a un DataFrame
df = pd.DataFrame(data)

# Separar características (X) y etiqueta (y)
X = df[["Horas de Estudio", "Asistencia"]]
y = df["Aprobó"]

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

# Crear y entrenar el árbol de decisión
clf = DecisionTreeClassifier(criterion="gini", max_depth=3, random_state=42)
clf.fit(X_train, y_train)

# Hacer predicciones
y_pred = clf.predict(X_test)

# Evaluar el modelo
accuracy = accuracy_score(y_test, y_pred)
print(f"Precisión del modelo: {accuracy * 100:.2f}%")

# Visualizar el árbol de decisión
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plot_tree(clf, feature_names=["Horas de Estudio", "Asistencia"], class_names=["No Aprobó", "Aprobó"], filled=True)
plt.title("Árbol de Decisión para Clasificar Estudiantes")
plt.show()

Explicación del código:

  1. Datos ficticios:

    • Creamos un pequeño conjunto de datos con horas de estudio, asistencia a clase y si aprobaron o no.
  2. Preparación de datos:

    • Separamos las características (X) y las etiquetas (y) en dos conjuntos: uno para entrenamiento y otro para prueba.
  3. Entrenamiento del modelo:

    • Usamos DecisionTreeClassifier con el criterio Gini para crear y entrenar el árbol de decisión.
  4. Predicción y evaluación:

    • Hacemos predicciones sobre los datos de prueba y calculamos la precisión del modelo usando accuracy_score.
  5. Visualización:

    • Utilizamos plot_tree para visualizar el árbol de decisión entrenado.

Salida esperada:

  1. Precisión del modelo: Un porcentaje que indica qué tan bien clasifica el modelo los datos de prueba.

  2. Visualización del árbol: Una representación gráfica del árbol de decisión, mostrando las divisiones en base a las características (horas de estudio y asistencia).


Extensión del ejercicio:

  • Agrega más características como "promedio de notas anteriores" o "participación en clase".
  • Experimenta cambiando el criterio del árbol (entropy en lugar de gini) y el max_depth.