Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Machine Learning clásico, Unidad 12 — Mini-proyecto de ML clásico, 12.1 — Proyecto guiado completo ·

Preparación de datos

Preparación de datos: El Pilar Fundamental para Un Buen Modelo de Machine Learning Clásico

Introducción

La preparación de datos es a menudo la fase más crucial y compleja en cualquier proyecto de machine learning clásico. A diferencia de otras etapas, como el entrenamiento o la inferencia, no existe un algoritmo o una herramienta mágica que haga todo por ti. Es una tarea manual intensiva que requiere entender profundamente tus datos y las reglas del negocio a los que estás aplicando el modelo.

La calidad de los datos utilizados para entrenar un modelo puede marcar la diferencia entre un resultado aceptable e insignificante, y uno que sea altamente preciso y valioso. En esta guía, exploraremos cómo preparar eficazmente tus datos para un proyecto de machine learning clásico, incluyendo errores comunes a evitar y un checklist útil.

Explicación principal con ejemplos

Carga y exploración inicial de datos

El primer paso es cargar los datos desde fuentes como archivos CSV o bases de datos. Usaremos pandas para esta tarea:

import pandas as pd

# Cargar datos
df = pd.read_csv('datos.csv')

# Explorar las columnas y tipos de datos
print(df.info())

Manejo de valores faltantes

Un error común es descuidar los valores nulos, lo que puede distorsionar tus análisis. Hay varias estrategias para manejarlos:

  • Eliminación: Si la cantidad de filas con valores faltantes es pequeña.
  • Interpolación o imputación: Usar una métrica estadística como la media o la mediana.
# Eliminar registros con valores faltantes
df_clean = df.dropna()

# Imputar valores faltantes con la media
mean_value = df['columna'].mean()
df_imputed = df.fillna(mean_value)

Tipos de datos incorrectos

Es crucial asegurarse de que los datos estén en el tipo correcto. Los tipos erróneos pueden causar problemas como valores fuera del rango esperado o problemas con funciones matemáticas.

# Convertir a entero
df['edad'] = df['edad'].astype(int)

# Convertir a booleano
df['activado'] = df['activado'].astype(bool)

Codificación de variables categóricas

Las variables categóricas deben codificarse para que puedan ser utilizadas por modelos numéricos. Usaremos LabelEncoder de sklearn.

from sklearn.preprocessing import LabelEncoder

# Crear un encoder
le = LabelEncoder()

# Codificar una variable
df['categorica'] = le.fit_transform(df['categorica'])

Escalamiento y normalización

Variables con escala muy diferente pueden afectar el rendimiento del modelo. Usaremos StandardScaler para estandarizar las variables.

from sklearn.preprocessing import StandardScaler

# Crear un scaler
scaler = StandardScaler()

# Ajuste y transformación
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

Errores típicos / trampas

  1. Ignorar la exploración de datos: Si no entiendes tus datos, es difícil prepararlos correctamente.
  2. Manejar valores faltantes de forma inadecuada: Los métodos de imputación incorrectos pueden distorsionar los resultados.
  3. No validar la codificación de variables categóricas: Codificar mal puede llevar a interpretaciones erróneas.

Checklist accionable

  1. Verifica y limpia los valores faltantes.
  2. Convierte variables numéricas en el tipo correcto.
  3. Codifica correctamente las variables categóricas.
  4. Escalar o normalizar las variables numéricas.
  5. Valida la calidad de tus datos con métricas y visualizaciones.

Cierre

La preparación de datos es una etapa crucial en cualquier proyecto de machine learning clásico. Asegúrate de invertir tiempo y esfuerzo para lograr resultados precisos y confiables.

Siguientes pasos

  • Entender más sobre exploración de datos: Herramientas como pandas y matplotlib son fundamentales.
  • Aprender técnicas avanzadas de manipulación de datos.
  • Practicar con proyectos reales para mejorar tus habilidades.

¡Happy coding!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).