La validación de datos es un paso crucial en cualquier pipeline de machine learning. Asegura que los datos que se utilizan para entrenar y evaluar modelos sean de alta calidad y estén libres de errores. En TensorFlow Extended (TFX), la validación de datos se realiza utilizando la biblioteca TensorFlow Data Validation
(TFDV).
Objetivos de la Validación de Datos
- Detectar Anomalías: Identificar valores atípicos o inconsistencias en los datos.
- Verificar Esquemas: Asegurarse de que los datos cumplen con un esquema predefinido.
- Generar Estadísticas: Obtener estadísticas descriptivas de los datos para entender mejor su distribución y características.
Instalación de TensorFlow Data Validation
Antes de comenzar, asegúrate de tener TFDV
instalado. Puedes instalarlo usando pip:
Generación de Estadísticas
El primer paso en la validación de datos es generar estadísticas descriptivas. Estas estadísticas proporcionan una visión general de los datos y ayudan a identificar posibles problemas.
Ejemplo de Código
import tensorflow_data_validation as tfdv # Cargar datos de ejemplo data = [ {'feature1': 1.0, 'feature2': 'A'}, {'feature1': 2.0, 'feature2': 'B'}, {'feature1': 3.0, 'feature2': 'A'}, {'feature1': 4.0, 'feature2': 'B'} ] # Convertir datos a un formato compatible con TFDV import pandas as pd data_df = pd.DataFrame(data) # Generar estadísticas stats = tfdv.generate_statistics_from_dataframe(data_df) # Visualizar estadísticas tfdv.visualize_statistics(stats)
Explicación del Código
- Importar TFDV: Importamos la biblioteca
tensorflow_data_validation
. - Cargar Datos: Creamos un conjunto de datos de ejemplo.
- Convertir Datos: Convertimos los datos a un DataFrame de pandas, que es compatible con TFDV.
- Generar Estadísticas: Utilizamos
tfdv.generate_statistics_from_dataframe
para generar estadísticas descriptivas. - Visualizar Estadísticas: Utilizamos
tfdv.visualize_statistics
para visualizar las estadísticas generadas.
Esquemas de Datos
Un esquema define las expectativas sobre los datos, como el tipo de datos, el rango de valores permitidos y la presencia de valores nulos. TFDV puede generar un esquema automáticamente basado en las estadísticas de los datos.
Ejemplo de Código
# Generar esquema a partir de las estadísticas schema = tfdv.infer_schema(stats) # Visualizar esquema tfdv.display_schema(schema)
Explicación del Código
- Generar Esquema: Utilizamos
tfdv.infer_schema
para generar un esquema basado en las estadísticas de los datos. - Visualizar Esquema: Utilizamos
tfdv.display_schema
para visualizar el esquema generado.
Detección de Anomalías
Una vez que tenemos un esquema, podemos utilizarlo para detectar anomalías en nuevos datos.
Ejemplo de Código
# Cargar nuevos datos de ejemplo new_data = [ {'feature1': 1.0, 'feature2': 'A'}, {'feature1': 2.0, 'feature2': 'C'}, # Anomalía: valor inesperado en feature2 {'feature1': 3.0, 'feature2': 'A'}, {'feature1': 5.0, 'feature2': 'B'} # Anomalía: valor fuera del rango esperado en feature1 ] # Convertir nuevos datos a un DataFrame new_data_df = pd.DataFrame(new_data) # Generar estadísticas para los nuevos datos new_stats = tfdv.generate_statistics_from_dataframe(new_data_df) # Detectar anomalías anomalies = tfdv.validate_statistics(new_stats, schema) # Visualizar anomalías tfdv.display_anomalies(anomalies)
Explicación del Código
- Cargar Nuevos Datos: Creamos un nuevo conjunto de datos de ejemplo que contiene algunas anomalías.
- Convertir Nuevos Datos: Convertimos los nuevos datos a un DataFrame de pandas.
- Generar Estadísticas: Generamos estadísticas descriptivas para los nuevos datos.
- Detectar Anomalías: Utilizamos
tfdv.validate_statistics
para detectar anomalías comparando las estadísticas de los nuevos datos con el esquema. - Visualizar Anomalías: Utilizamos
tfdv.display_anomalies
para visualizar las anomalías detectadas.
Ejercicio Práctico
Ejercicio
- Crea un conjunto de datos de ejemplo con al menos 5 características y 100 registros.
- Genera estadísticas descriptivas para el conjunto de datos.
- Genera un esquema basado en las estadísticas.
- Introduce algunas anomalías en un nuevo conjunto de datos.
- Detecta y visualiza las anomalías utilizando el esquema generado.
Solución
import numpy as np # Crear conjunto de datos de ejemplo data = { 'feature1': np.random.normal(0, 1, 100), 'feature2': np.random.choice(['A', 'B', 'C'], 100), 'feature3': np.random.randint(0, 100, 100), 'feature4': np.random.uniform(0, 1, 100), 'feature5': np.random.choice([True, False], 100) } # Convertir datos a DataFrame data_df = pd.DataFrame(data) # Generar estadísticas stats = tfdv.generate_statistics_from_dataframe(data_df) # Generar esquema schema = tfdv.infer_schema(stats) # Introducir anomalías en un nuevo conjunto de datos new_data = { 'feature1': np.append(np.random.normal(0, 1, 98), [10, 20]), # Anomalías 'feature2': np.append(np.random.choice(['A', 'B', 'C'], 98), ['D', 'E']), # Anomalías 'feature3': np.random.randint(0, 100, 100), 'feature4': np.random.uniform(0, 1, 100), 'feature5': np.random.choice([True, False], 100) } # Convertir nuevos datos a DataFrame new_data_df = pd.DataFrame(new_data) # Generar estadísticas para los nuevos datos new_stats = tfdv.generate_statistics_from_dataframe(new_data_df) # Detectar anomalías anomalies = tfdv.validate_statistics(new_stats, schema) # Visualizar anomalías tfdv.display_anomalies(anomalies)
Conclusión
La validación de datos es un paso esencial en el pipeline de machine learning para asegurar la calidad y consistencia de los datos. Utilizando TensorFlow Data Validation, podemos generar estadísticas descriptivas, definir esquemas y detectar anomalías de manera eficiente. Esto nos permite identificar y corregir problemas en los datos antes de entrenar nuestros modelos, mejorando así la precisión y robustez de los mismos.
Curso de TensorFlow
Módulo 1: Introducción a TensorFlow
- ¿Qué es TensorFlow?
- Configuración de TensorFlow
- Conceptos Básicos de TensorFlow
- Hola Mundo en TensorFlow
Módulo 2: Fundamentos de TensorFlow
Módulo 3: Manejo de Datos en TensorFlow
Módulo 4: Construcción de Redes Neuronales
- Introducción a Redes Neuronales
- Creando una Red Neuronal Simple
- Funciones de Activación
- Funciones de Pérdida y Optimizadores
Módulo 5: Redes Neuronales Convolucionales (CNNs)
Módulo 6: Redes Neuronales Recurrentes (RNNs)
- Introducción a RNNs
- Construyendo una RNN
- Memoria a Largo Plazo (LSTM)
- Unidades Recurrentes Gated (GRUs)
Módulo 7: Técnicas Avanzadas de TensorFlow
- Capas y Modelos Personalizados
- TensorFlow Hub
- Aprendizaje por Transferencia
- Ajuste de Hiperparámetros