División de datos (Train/Test Split)
Dividir los datos en entrenamiento y prueba es un paso esencial en cualquier proyecto de IA. Sin esta división, no puedes evaluar correctamente el rendimiento de tu modelo. En esta guía aprenderás cómo hacerlo con Scikit‑Learn y por qué es tan importante.
Tabla de contenidos
- Qué es Train/Test Split
- Por qué es necesario
- Cómo dividir datos con Scikit‑Learn
- Proporciones recomendadas
- División estratificada
- Ejercicios
- Mini‑proyecto
1. Qué es Train/Test Split
Train/Test Split es el proceso de dividir un dataset en dos partes:
- Train: datos para entrenar el modelo
- Test: datos para evaluar el modelo
# Ejemplo conceptual
80% → entrenamiento
20% → prueba
2. Por qué es necesario
Si entrenas y evalúas con los mismos datos, el modelo memoriza la información y no sabes si realmente generaliza.
- Evita overfitting
- Permite evaluar rendimiento real
- Simula datos nuevos
3. Cómo dividir datos con Scikit‑Learn
from sklearn.model_selection import train_test_split
X = df.drop(columns=["target"])
y = df["target"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
test_size=0.2 significa que el 20% de los datos se usan para prueba.
4. Proporciones recomendadas
- 80/20 → estándar
- 70/30 → datasets grandes
- 90/10 → datasets pequeños
5. División estratificada
En clasificación, es importante mantener la proporción de clases en train y test.
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y
)
6. Ejercicios
- Divide un dataset en train y test.
- Usa una proporción 70/30.
- Realiza una división estratificada.
- Explica por qué no se debe evaluar con datos de entrenamiento.
- Indica qué proporción usarías para un dataset pequeño.
# pista división
train_test_split(X, y, test_size=0.3)
# pista estratificada
stratify=y
7. Mini‑proyecto: División completa
Toma un dataset real y realiza:
- División 80/20
- División 70/30
- División estratificada
- Comparación de tamaños de train y test