Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

TensorFlow desde cero, Unidad 9 — Uso de TensorFlow con distintos tipos de datos, 9.1 — Datos tabulares ·

Preprocesado

Preprocesado de datos tabulares para TensorFlow

Introducción

El preprocesado es una etapa crucial en el uso de TensorFlow con datos tabulares. Este proceso implica transformar y preparar los datos brutos, como valores numéricos o categóricas, para que sean adecuados para su entrada a un modelo de aprendizaje profundo. El preprocesado bien realizado asegura que los modelos entrenados sean más precisos y eficientes.

Explicación principal con ejemplos

El preprocesado de datos tabulares en TensorFlow se realiza típicamente en varios pasos, desde la lectura del conjunto de datos hasta su normalización y codificación. Vamos a explorar estos pasos utilizando un ejemplo práctico.

Lectura del Conjunto de Datos

Primero, cargamos los datos. Supongamos que tenemos un archivo CSV con columnas numéricas y categóricas:

import pandas as pd

# Cargar el conjunto de datos
df = pd.read_csv('data.csv')

# Mostrar las primeras filas del DataFrame
print(df.head())

Manejo de Datos Faltantes

Uno de los errores más comunes es no manejar correctamente los valores faltantes. Podemos reemplazarlos con el valor medio o la moda, dependiendo del tipo de dato:

# Reemplazar valores faltantes en columnas numéricas
df['columna_numérica'].fillna(df['columna_numérica'].mean(), inplace=True)

# Reemplazar valores faltantes en columnas categóricas
df['columna_categórica'].fillna(df['columna_categórica'].mode()[0], inplace=True)

Normalización Numérica

Es esencial normalizar los datos numéricos para mejorar la convergencia del entrenamiento y reducir el riesgo de saturación en las capas de neuronas:

from sklearn.preprocessing import MinMaxScaler

# Crear un scaler
scaler = MinMaxScaler()

# Ajustar y transformar los datos numéricos
df['columna_numérica'] = scaler.fit_transform(df[['columna_numérica']])

Codificación Categórica

Para convertir las variables categóricas en valores numéricos, utilizamos técnicas como one-hot encoding:

# One-hot encoding de una columna categórica
df = pd.get_dummies(df, columns=['columna_categórica'])

Truncamiento y Escalamiento

Algunos datos pueden tener valores extremadamente altos o bajos que afectan negativamente al entrenamiento. Podemos aplicar un límite a estos valores:

# Limitar valores extremos en una columna numérica
df['columna_numérica'] = np.clip(df['columna_numérica'], df['columna_numérica'].quantile(0.01), df['columna_numérica'].quantile(0.99))

Ejemplo Completo de Preprocesado

import pandas as pd
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder
from tensorflow.keras.utils import to_categorical

# Cargar el conjunto de datos
df = pd.read_csv('data.csv')

# Manejo de valores faltantes
df['columna_numérica'].fillna(df['columna_numérica'].mean(), inplace=True)
df['columna_categórica'].fillna(df['columna_categórica'].mode()[0], inplace=True)

# Normalización numérica
scaler = MinMaxScaler()
df['columna_numérica'] = scaler.fit_transform(df[['columna_numérica']])

# Codificación categórica (One-hot encoding)
encoder = OneHotEncoder(sparse=False)
encoded_data = encoder.fit_transform(df[['columna_categórica']])
df = pd.concat([df, pd.DataFrame(encoded_data)], axis=1).drop('columna_categórica', axis=1)

# Limitar valores extremos
df['columna_numérica'] = np.clip(df['columna_numérica'], df['columna_numérica'].quantile(0.01), df['columna_numérica'].quantile(0.99))

# Separar características y etiquetas
X = df.drop('etiqueta', axis=1)
y = to_categorical(df.pop('etiqueta'))

# Verificar el DataFrame resultante
print(X.head(), y[:5])

Errores típicos / trampas

  1. No manejar valores faltantes: Los valores faltantes pueden distorsionar los resultados del modelo.
  2. No normalizar datos numéricos: La falta de normalización puede llevar a la saturación de las capas y al mal entrenamiento.
  3. Ignorar la codificación categórica: Las variables categóricas no se pueden introducir directamente en los modelos de aprendizaje profundo, requieren una transformación adecuada.

Checklist accionable

  1. Identificar y manejar los valores faltantes.
  2. Normalizar todos los datos numéricos.
  3. Codificar todas las variables categóricas.
  4. Limitar los valores extremos en datos numéricos.
  5. Separar características y etiquetas.

Cierre: Siguientes pasos

  • Explorar más técnicas de preprocesado: Experimente con diferentes métodos para normalización y codificación.
  • Optimizar el rendimiento: Pruebe diferentes enfoques para reducir la latencia en inferencias.
  • Documentar todo el proceso: Mantenga un registro detallado del preprocesamiento realizado.

Siguiendo estos pasos, puede preparar datos tabulares de manera efectiva para su uso en modelos de aprendizaje profundo con TensorFlow.

Contacto

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