Sistema de gestión de experimentos de Machine Learning hecho con Django + Django REST Framework. Pensado como proyecto base para un training introductorio de Data Science.
cd ml_tracker/backend
python -m venv .venv &&source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py seed
python manage.py runserverTip: para el admin podés crear un superuser con
python manage.py createsuperuser.
ml_tracker/
├── backend/
│ ├── config/ # Configuración del proyecto Django (settings, urls, wsgi/asgi)
│ ├── experiments/ # App de dominio: modelos, serializers, views, admin, urls
│ │ └── management/commands/seed.py # Datos de demo
│ ├── manage.py # CLI de Django (migrate, runserver, seed, etc.)
│ └── requirements.txt # Dependencias Python
├── docs/
│ └── GUIA_DEMO.md # Guion de la demo en vivo (15 min, 7 pasos)
└── README.md
| Carpeta / archivo | Para qué sirve |
|---|---|
backend/config/ | Configuración global: settings, URLs raíz, entry points WSGI/ASGI. |
backend/experiments/ | App de dominio. Acá viven Project, Experiment y Run. |
backend/experiments/models.py | Definición de las tablas en la base. |
backend/experiments/serializers.py | JSON ↔ modelos Django (List vs Detail). |
backend/experiments/views.py | Endpoints REST (ViewSets) + action summary. |
backend/experiments/admin.py | Admin de Django para cargar/inspeccionar datos. |
backend/experiments/urls.py | Rutas de la API generadas con DefaultRouter. |
backend/experiments/management/commands/seed.py | Comando python manage.py seed para datos demo. |
docs/GUIA_DEMO.md | Guion paso a paso para la demo del training. |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/projects/ | Lista de proyectos. |
| POST | /api/projects/ | Crear un proyecto. |
| GET | /api/projects/{id}/ | Detalle de un proyecto. |
| PUT/PATCH | /api/projects/{id}/ | Actualizar un proyecto. |
| DELETE | /api/projects/{id}/ | Borrar un proyecto. |
| GET | /api/experiments/ | Lista de experimentos (serializer liviano). |
| POST | /api/experiments/ | Crear experimento (espera project_id). |
| GET | /api/experiments/{id}/ | Detalle con proyecto anidado. |
| PUT/PATCH | /api/experiments/{id}/ | Actualizar experimento. |
| DELETE | /api/experiments/{id}/ | Borrar experimento. |
| GET | /api/runs/ | Lista de runs (serializer liviano). |
| POST | /api/runs/ | Crear run (espera experiment_id). |
| GET | /api/runs/{id}/ | Detalle del run con experimento anidado. |
| PUT/PATCH | /api/runs/{id}/ | Actualizar run (status, métricas, etc.). |
| DELETE | /api/runs/{id}/ | Borrar run. |
| GET | /api/runs/{id}/summary/ | Resumen: experimento + algoritmo + métricas. |
| GET | /admin/ | Panel de administración. |
python manage.py seed carga:
- 2 proyectos: Churn Prediction y Demand Forecasting.
- 3 experimentos con distintos algoritmos: Random Forest, XGBoost y Linear Regression.
- 5 runs con distintos
statusy métricas realistas (accuracy,f1_score,roc_auc,rmse,mae,r2).