Proyecto de predicción de resultados de partidos de fútbol utilizando Machine Learning e Inteligencia Artificial.
Construir un pipeline completo que permita:
- Obtener datos históricos de partidos.
- Limpiar y procesar los datos.
- Generar variables predictivas (Feature Engineering).
- Entrenar modelos de Machine Learning.
- Evaluar su rendimiento.
- Exponer el modelo mediante una API para realizar predicciones.
- Python 3.11
- Pandas
- NumPy
- Scikit-Learn
- LightGBM
- CatBoost
- Optuna
- FastAPI
- Jupyter
src/
│
├── api/
├── config/
├── data/
├── features/
├── models/
└── utils/
data/
├── raw/
├── processed/
└── external/
models/
tests/
notebooks/
git clone <repo>
cd match-predictorWindows
py -3.11 -m venv .venvLinux
python3.11 -m venv .venvWindows
.venv\Scripts\activateLinux
source .venv/bin/activatepip install -r requirements.txtDatos
↓
Limpieza
↓
Feature Engineering
↓
Entrenamiento
↓
Evaluación
↓
Optimización
↓
Predicción
Responsabilidades:
- Descargar datasets históricos.
- Integrar Football-Data.
- Integrar API-Football.
- Guardar datos en
data/raw.
Archivos:
src/data/downloader.py
src/data/loader.py
Responsabilidades:
- Normalizar nombres de equipos.
- Eliminar datos inconsistentes.
- Manejar valores faltantes.
- Crear dataset limpio.
Archivos:
src/data/preprocessing.py
Responsabilidades:
- Elo Rating.
- Forma de los últimos partidos.
- Estadísticas acumuladas.
- Local vs visitante.
- Historial entre equipos.
Archivos:
src/features/
Responsabilidades:
- Baseline.
- LightGBM.
- CatBoost.
- Optimización con Optuna.
- Guardado del modelo.
Archivos:
src/models/
Responsabilidades:
- Endpoint de predicción.
- Carga del modelo.
- Validación de entrada.
- Documentación automática.
Archivos:
src/api/
- Código en inglés.
- Variables descriptivas.
- Funciones pequeñas y reutilizables.
- Cada cambio mediante Pull Request.
- No subir datasets grandes ni modelos entrenados al repositorio.
- Descargar datos históricos.
- Crear pipeline de limpieza.
- Construir dataset final.
- Implementar Feature Engineering.
- Entrenar modelo base.
- Evaluar métricas.
- Optimizar hiperparámetros.
- Comparar modelos.
- Seleccionar el mejor.
- Crear API.
- Realizar pruebas.
- Desplegar el modelo.
Desarrollar un sistema reproducible capaz de estimar probabilidades de victoria, empate o derrota utilizando datos históricos y técnicas modernas de Machine Learning.