// Portfolio de Ciencia de Datos y Analítica

Alejandro Belda Fernández

Junior Data Scientist & Data Analyst · Python · SQL · Machine Learning

Aquí tienes mis proyectos de ciencia de datos y análisis: el código, los resultados y lo que aprendí en cada uno.

// Sobre mí

Trayectoria

Graduado en Informática por la Universidad de Murcia con Máster en Inteligencia Artificial. Durante un año trabajé como investigador (PDI) gestionando datasets biológicos complejos, administrando infraestructura de servidores Linux y colaborando en entornos de investigación académica. Esa experiencia me dio una base sólida en calidad del dato, rigor metodológico y trabajo con datos reales. Actualmente estoy en transición hacia roles en la industria como Data Scientist o Data Analyst.

Disfruto del pipeline completo: entender el problema de negocio, limpiar y transformar datos desordenados, explorarlos con las preguntas correctas, construir modelos que funcionen en contexto y comunicar los resultados con claridad. Me importa la evaluación honesta, las decisiones documentadas y las conclusiones que los perfiles no técnicos puedan llevar a la práctica.

Estado
Parado
Busco
Data Scientist / Data Analyst
Formación
Ingeniería Informática y Máster en Inteligencia Artificial — Universidad de Murcia
Experiencia previa
Más de 1 año como investigador (PDI)
Idiomas
Español (nativo) · Inglés (B2)
Contacto
alejandrobeldafernandez@gmail.com

// Habilidades

Stack de trabajo

Machine Learning

Pythonscikit-learnPandas MatplotlibSeaborn

MLOps & Despliegue

DockerFastAPIGit MLflowLinuxPrefect AWSAzure

Bases de datos y herramientas

SQLPyPI Herramientas BIHojas de cálculo

// Proyectos Destacados

Cinco entradas que resumen el rango de trabajo

Pipeline · LLM

Generador Automatizado de Reportes de Noticias

Scraping, orquestación, resumen con LLM local y despliegue autoalojado, verificado contra el servicio real en cada paso.

Recommender Systems

Sistema de Recomendación de Películas

Tres enfoques de recomendación comparados y explicados, en vez de combinarse en un ranking de caja negra.

MLOps · Producción

MLOps: Predicción de Churn en Telco

Ciclo de vida completo en producción: tracking, orquestación, monitorización de drift, reentrenamiento automático y API desplegada.

SQL · BI

Análisis de Ventas de una Cafetería

12 preguntas de negocio respondidas íntegramente en SQL, desde la limpieza hasta un dashboard y una presentación.

NLP · RAG

Reseñas de Amazon en Español

Clasificación de sentimiento y un sistema RAG sobre el mismo corpus, con comparación A/B formal entre baseline y transformer.

// Código Abierto

Publicado de forma independiente

PyPI

calm-data-generator

Librería de Python para generación de datos tabulares sintéticos, desarrollada durante mi etapa como investigador. Envuelve varios motores de generación bajo una única interfaz, simula concept drift para probar cómo se degradan los modelos, y genera un informe automatizado de calidad de datos para cada dataset producido.


// Registro Completo

Los diez proyectos, entrada por entrada

LOG · 01 Predicción de Heridos en Accidentes de Tráfico (Madrid) ROC AUC 0.873
+
Tipo
Clasificación
Stack
Python · pandas · scikit-learn · CatBoost · Optuna · SHAP
Dataset
Ayuntamiento de Madrid (2019–2023)

Predice si un accidente de tráfico en Madrid resultará en al menos un herido, usando información disponible en el momento del registro. Cubre agregación por accidente, feature engineering, tuning con Optuna y explicabilidad con SHAP.

Resultados (CatBoost): ROC AUC 0.873 · Balanced Accuracy 0.801 · Macro F1 0.73

En la práctica

De cada 10 accidentes predichos con heridos, 8 o 9 son correctos. Los errores restantes son mayoritariamente falsas alarmas, no heridos no detectados: el tipo de error menos grave en un contexto de emergencias.

LOG · 02 Predicción del Precio de la Vivienda (Madrid) R² 0.897
+
Tipo
Regresión
Stack
Python · pandas · scikit-learn · XGBoost · Optuna · SHAP
Dataset
Kaggle — propiedades residenciales en Madrid

Predice el precio de venta a partir de características físicas y ubicación. Incluye TargetEncoder por distrito, tuning con Optuna, intervalos de confianza vía bootstrap y explicabilidad con SHAP.

Resultados (XGBoost): RMSE 69.568 € · R² 0.897 · MAPE 15.27%

En la práctica

El precio predicho se sitúa, de media, dentro del 15% del precio real. Superficie construida y distrito son los factores dominantes, y se amplifican entre sí: un piso grande en Chamberí vale desproporcionadamente más que uno igual de grande en Vallecas.

LOG · 03 Clustering de Perfiles de Clientes Silhouette 0.24
+
Tipo
Clustering no supervisado
Stack
Python · pandas · scikit-learn · umap-learn
Dataset
Kaggle — Customer Personality Analysis

Segmenta clientes en 3 perfiles a partir de datos demográficos, de gasto y de respuesta a campañas. Incluye detección de outliers, PCA, K-Means con selección por codo y silueta, y visualización UMAP.

Resultados (K-Means K=3 + PCA): Silhouette Score 0.24 · 3 segmentos identificados

En la práctica

Los clientes Premium gastan 1.274 € de media sin necesitar descuentos. Los Cazadores de Ofertas compran 3,4 veces más con promociones: ahí es donde el presupuesto de descuentos rinde más. Aplicar la misma campaña a los tres grupos es la peor asignación posible.

LOG · 04 MLOps: Predicción de Fuga de Clientes ROC-AUC 0.84
+
Tipo
Pipeline MLOps · Clasificación binaria
Stack
scikit-learn · Optuna · MLflow · Prefect · FastAPI · Evidently AI · Docker · Terraform
Dataset
Kaggle — IBM Telco Customer Churn

Ciclo de vida completo en producción: validación de datos, tuning con Optuna (150 trials), tracking con MLflow, orquestación con Prefect, monitorización de drift, reentrenamiento automático y API REST con FastAPI.

Resultados (Random Forest + Optuna): ROC-AUC 0.84 · Balanced Accuracy 0.76 · Recall (churn) 0.76

En la práctica

El modelo identifica al 76% de los clientes que van a cancelar antes de que lo hagan. El valor real está en la infraestructura: el pipeline reentrena solo cuando más del 40% de las variables muestran drift, y solo promociona un modelo nuevo si supera al actual.

LOG · 05 Predicción de Series Temporales de Ventas RMSLE 0.381
+
Tipo
Series temporales · Datos de panel
Stack
pandas · statsmodels · linearmodels · LightGBM · XGBoost · Optuna · SHAP
Dataset
Kaggle — Corporación Favorita (Ecuador)

Previsión de principio a fin sobre un panel de 3 millones de filas (1.782 series tienda × familia durante 4,5 años). Incluye diagnóstico clásico de series temporales, baseline econométrico con PanelOLS y modelos de gradient boosting con validación cruzada temporal.

Resultados (XGBoost + Optuna): RMSLE 0.381 · R² 0.977 · ~28% mejor que el baseline naive

En la práctica

Las predicciones se explican sobre todo por la inercia reciente de ventas. La única palanca de alto impacto que la empresa controla son las promociones, así que el modelo funciona además como simulador de escenarios antes de gastar un solo euro.

LOG · 06 Análisis de Ventas de Cafeterías SQL · 12 preguntas
+
Tipo
EDA · Business Intelligence
Stack
PostgreSQL · Google Sheets · Metabase · Google Slides
Dataset
Maven Analytics — Coffee Shop Sales (NYC)

Análisis de ventas de una cadena de cafeterías ficticia con tres locales en Nueva York. Limpieza en SQL, 12 preguntas de negocio respondidas íntegramente en SQL, dashboard en Metabase y presentación de data storytelling.

Hallazgos clave: el revenue casi se duplicó de enero a junio. Coffee y Tea generan el 66% del revenue. Solo 11 tipos de producto generan el 80% (regla de Pareto).

En la práctica

Un propietario puede usar este análisis para decidir qué productos potenciar, optimizar turnos según las horas punta y diseñar campañas para los meses más débiles.

LOG · 07 Reseñas de Amazon en Español Macro F1 0.765
+
Tipo
NLP · Deep Learning · Retrieval
Stack
PyTorch · Hugging Face Transformers · ChromaDB
Dataset
Amazon Reviews Multi — español (208.899 reseñas)

Un clasificador de sentimiento (TF-IDF baseline vs. BETO ajustado) y un sistema RAG que responde preguntas sobre el corpus citando reseñas reales. Comparación A/B formal con McNemar, bootstrap y análisis de coste por predicción.

Resultados: BETO 0,765 F1 macro vs. 0,725 del baseline (p = 1,3e-12), pero 1.009 veces más caro por predicción.

En la práctica

El clasificador dice cuántos clientes están descontentos y dónde; el RAG dice por qué. Etiquetar el índice completo cuesta 10 segundos con el baseline frente a 2,8 horas con BETO, así que el coste decide la arquitectura.

LOG · 08 Sistema de Recomendación de Películas Precision@5 42.4%
+
Tipo
Recommender Systems · Matrix Factorization
Stack
pandas · scikit-learn · Surprise (SVD) · Gradio
Dataset
The Movies Dataset — 7.818 películas, ~100.000 valoraciones

Tres sistemas comparados sobre el mismo catálogo: basado en contenido, colaborativo item-based y SVD. Evaluados con Precision@5/Recall@5, documentando arranque en frío y cobertura en lugar de mezclarlos en un único ranking.

Resultados: el colaborativo gana por 7-8x, pero cubre solo el 43% del catálogo con historial suficiente.

En la práctica

Los tres modelos son complementarios, no competidores. Un producto real necesita los tres, más un plan explícito para el 57% del catálogo al que el colaborativo y SVD no llegan.

LOG · 09 Clasificación de Imágenes de Productos de Moda Accuracy 99%
+
Tipo
Computer Vision · Transfer Learning · Grad-CAM
Stack
PyTorch · torchvision · Grad-CAM
Dataset
Fashion Product Images — 43.946 productos

EfficientNetB0 y ResNet50 comparados sobre la misma tarea de clasificación, interpretados con Grad-CAM en vez de dejarlos como caja negra. 3 de 7 categorías originales se descartaron por falta de datos suficientes.

Resultados: ResNet50 gana en todas las clases y métricas (99% vs. 97% de accuracy).

En la práctica

Accessories y Apparel concentran el 63% de los errores: Grad-CAM muestra que el modelo fija la atención en el accesorio en vez de en la prenda etiquetada. Un fallo concreto y entendido, no ruido aleatorio.

LOG · 10 Generador Automatizado de Reportes de Noticias Self-hosted
+
Tipo
Web Scraping · Orquestación · LLM local
Stack
Playwright · Prefect · SQLite · Qwen2.5 · Docker · Tailscale Funnel
Fuente
Sitemap de Google News de RTVE

Pipeline de extremo a extremo verificado contra el servicio real en cada paso, no contra su documentación. El destino de despliegue previsto (Hugging Face Spaces) resultó no ser viable, así que el proyecto terminó autoalojado vía Docker + Tailscale Funnel.

Resultado: reporte diario funcional con cita a la fuente original en cada entrada.

En la práctica

El dashboard solo está disponible mientras la máquina autoalojada está encendida, no 24/7: la contrapartida honesta de un despliegue realmente gratuito.

EXTRA Cloud: Inferencia ML Serverless en AWS y Azure Serverless
+
Tipo
Despliegue Cloud · Arquitectura Serverless
Stack
AWS S3 · Lambda · API Gateway · Azure Blob Storage · Azure Functions
Dataset
Iris (AWS) · Diabetes (Azure) — casos de estudio mínimos

Dos proyectos pequeños y autocontenidos para demostrar conocimiento práctico de ambas nubes: modelos servidos vía endpoint HTTP público, sin servidor que administrar. El foco es la arquitectura y los problemas reales resueltos por el camino (permisos IAM, límites de paquete, restricciones de región).