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
- No escalar variables categóricas: Asegúrate de no aplicar el escalado en variables que son únicamente categorías.
- 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.
- Ignorar la correlación entre características: Las características altamente correlacionadas pueden ser redundantes y afectan negativamente al rendimiento del modelo.
Checklist accionable
- Evalúa la distribución: Usa histogramas o diagramas de caja para identificar posibles outliers.
- Transforma variables numéricas: Aplica escalado, normalización o transformaciones logarítmicas según sea necesario.
- Codifica variables categóricas: Usa one-hot encoding, label encoding o dummy variable encoding según la naturaleza de las variables.
- Maneja valores faltantes: Decide si eliminar filas con valores faltantes, rellenarlos o predecirlos.
- 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,replaceyget_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.