Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

SQL para ciencia de datos, Unidad 12 — Mini-proyecto de análisis con SQL, 12.1 — Proyecto guiado completo ·

Preparación para ML

Preparación para ML: Proyecto guiado completo

Introducción

La preparación de datos es un paso crucial en la ciencia de datos, especialmente cuando se aborda el aprendizaje automático (ML). En este proyecto guiado, aprenderás a transformar un dataset en uno que esté listo para ser utilizado por modelos ML. Este proceso implica varias etapas, desde la exploración inicial hasta la generación de características y la eliminación de datos irrelevantes.

Explicación principal con ejemplos

Vamos a trabajar con el dataset "Ventas diarias" de una tienda ficticia. Esta base de datos contiene información sobre ventas por día, incluyendo detalles del producto vendido, el precio, la cantidad vendida y los costos asociados.

Exploración inicial

Antes de hacer cualquier cambio, es crucial entender el dataset. Vamos a realizar algunas consultas básicas para obtener un panorama general:

SELECT 
    COUNT(*) AS total_rows,
    COUNT(DISTINCT date) AS distinct_dates,
    COUNT(DISTINCT product_id) AS distinct_products,
    SUM(sales_amount) AS total_sales
FROM ventas_diarias;

Transformación de datos

1. Limpieza y preparación básica

Errores comunes:

  • Olvidar llenar valores nulos.
  • No normalizar datos (por ejemplo, precios en diferentes monedas).
-- Manejo de valores nulos en el precio del producto
UPDATE ventas_diarias 
SET unit_price = 0 
WHERE unit_price IS NULL;

-- Normalización de precios a una única moneda
UPDATE ventas_diarias 
SET unit_price = unit_price / 1.25 -- Suponiendo que se convierte de euros a dólares
WHERE currency_type = 'euros';

2. Generación de características

Errores comunes:

  • Agregar características irrelevantes.
  • Olvidar considerar el contexto del negocio al crear nuevas columnas.
-- Creando una nueva columna para el costo por unidad
ALTER TABLE ventas_diarias 
ADD COLUMN cost_per_unit DECIMAL(10, 2) AS (cost / quantity);

-- Generando un indicador para días de alta temporada
WITH temporada AS (
    SELECT date, product_id,
        CASE 
            WHEN date BETWEEN '2023-05-01' AND '2023-12-25' THEN 1
            ELSE 0
        END AS es_temporada
    FROM ventas_diarias
)
SELECT * FROM temporada;

3. Agrupaciones y agregados

Errores comunes:

  • Usar funciones de agregación incorrectamente.
  • No entender el impacto del GROUP BY.
-- Agrupando por producto y calcular los ingresos totales
SELECT product_id, SUM(sales_amount) AS total_revenue
FROM ventas_diarias
GROUP BY product_id;

-- Error: Olvidar incluir una columna en GROUP BY al usar funciones de agregación.
-- CORRECTO:
SELECT date, SUM(sales_amount)
FROM ventas_diarias
GROUP BY date;

Errores típicos / trampas

  1. Funciones de agregación incorrectas: Usar SUM para conteos o AVG para sumas.
  2. Olvidar normalizar datos: Ignorar la unificación de unidades y monedas puede causar distorsiones en el análisis.
  3. Columnas innecesarias: Crear características que no aportan valor al modelo.

Checklist accionable

  1. Llenar o eliminar valores nulos en las columnas relevantes.
  2. Normalizar los datos para una consistencia uniforme (precios, fechas, etc.).
  3. Generar nuevas columnas basadas en el contexto del negocio y la lógica de negocio.
  4. Agrupar y agregar funciones de agregación apropiadamente sin olvidar incluir todas las columnas necesarias en GROUP BY.
  5. Validar los resultados con consultas explícitas para asegurar que todo esté correcto.

Cierre: Siguientes pasos

  • Avanzar a Pandas: Utiliza la base de datos preparada para explorarla más profundamente utilizando Python y Pandas.
  • Aplicar técnicas ML: Importa los datos en un entorno de desarrollo y aplica algoritmos básicos de aprendizaje automático.
  • Análisis adicional: Considera agregar más características relevantes o realizar análisis adicionales para mejorar el rendimiento del modelo.

¡Esperamos que este proyecto te haya ayudado a comprender mejor la preparación de datos en SQL y su importancia para el machine learning!

Contacto

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