Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python intermedio para IA, Unidad 10 — Preparación para Machine Learning, 10.2 — Preprocesamiento en Python puro ·

Preparar datos para ML

Preparar datos para ML

Introducción

En la inteligencia artificial y el aprendizaje automático, los datos son la base de todo. La calidad, consistencia y relevancia de los datos pueden determinar el éxito o fracaso de un proyecto de machine learning (ML). El preprocesamiento en Python puro es una etapa crucial que transforma datos brutos en formatos útiles para nuestros modelos. Aprender a preparar adecuadamente tus datos no solo mejora la calidad del modelo final, sino también aumenta el rendimiento y reduce el tiempo de entrenamiento.

Explicación principal

Transformación de variables numéricas

Una de las tareas más comunes en preprocesamiento es el escalado o normalización de variables numéricas. Esto se debe a que muchos algoritmos de ML, como los regresores lineales y los árboles de decisión, pueden rendir mejor cuando las características están en una escala similar.

import numpy as np

# Ejemplo: escalado de datos usando el método estándar (media = 0, desviación estándar = 1)
def standarize_data(data):
    return (data - np.mean(data)) / np.std(data)

# Datos de ejemplo
datos = [2.5, 3.6, 4.7, 5.8, 6.9]

# Aplicar el escalado
escalados = standarize_data(datos)
print(escalados)

Codificación de variables categóricas

Las variables categóricas son comunes en muchos datos reales y deben convertirse a formato numérico para ser usadas por los modelos ML. La codificación one-hot es una técnica popular que crea nuevas columnas binarias para cada valor único en la variable categórica.

# Ejemplo: Codificación one-hot
from sklearn.preprocessing import OneHotEncoder

datos_categoricos = ['rojo', 'verde', 'azul', 'rojo', 'amarillo']

# Crear el encoder y ajustarlo a los datos
encoder = OneHotEncoder()
encoded_data = encoder.fit_transform([datos_categoricos])

print(encoded_data.toarray())

Manejo de valores faltantes

Los valores faltantes son un problema común en los datos. Hay varias estrategias para manejarlos, como eliminar filas con valores faltantes, reemplazarlos con la media o mediana del conjunto, o predecirlos usando modelos.

# Ejemplo: Llenado de valores faltantes con la media
import pandas as pd

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, 5, 6]})
media = df['A'].mean()
df['A'] = df['A'].fillna(media)
print(df)

Trampas comunes a evitar

  1. No escalar variables categóricas: Asegúrate de no aplicar el escalado en variables que son únicamente categorías.
  2. Omitir la transformación necesaria: Si los datos tienen una distribución no normal, como log-normal o exponencial, asegúrate de usar transformaciones adecuadas antes del escalado.
  3. Ignorar la correlación entre características: Las características altamente correlacionadas pueden ser redundantes y afectan negativamente al rendimiento del modelo.

Checklist accionable

  1. Evalúa la distribución: Usa histogramas o diagramas de caja para identificar posibles outliers.
  2. Transforma variables numéricas: Aplica escalado, normalización o transformaciones logarítmicas según sea necesario.
  3. Codifica variables categóricas: Usa one-hot encoding, label encoding o dummy variable encoding según la naturaleza de las variables.
  4. Maneja valores faltantes: Decide si eliminar filas con valores faltantes, rellenarlos o predecirlos.
  5. Evalúa correlaciones: Usa heatmap para identificar características altamente correlacionadas.

Cierre

Siguientes pasos

  • Aprende sobre la codificación ordinal y su diferencia con one-hot encoding.
  • Familiarízate con el uso de Pandas en preprocesamiento, especialmente las funciones fillna, replace y get_dummies.
  • Explora más profundamente el tema del overfitting al manipular tus datos.

Preparar adecuadamente los datos es una habilidad crucial para cualquier científico de datos o desarrollador de IA. Siguiendo estos pasos, podrás mejorar significativamente la calidad y rendimiento de tu modelo ML.

Contacto

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