Loading repository data…
Loading repository data…
iamrodrigodev / repository
API REST construida con FastAPI para la predicción de deserción estudiantil usando Machine Learning. Proyecto Final del curso de Inteligencia Artificial.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Backend del proyecto final de Inteligencia Artificial para predecir desercion estudiantil mediante Machine Learning y exponer el resultado por una API REST con FastAPI.
El backend resuelve un problema de clasificacion supervisada: predecir si un estudiante esta en riesgo de desercion a partir de variables academicas, administrativas y demograficas.
La API recibe el perfil de un estudiante, valida los datos, aplica el modelo entrenado y devuelve:
Desercion o Graduado.ucimlrepoTarget.Dropout y Graduate.Enrolled, para formular el problema como clasificacion binaria.data/raw/data.csv (ignorado por Git; se regenera ejecutando el pipeline).Ejecutar pipeline:
python -m notebooks.pipeline
Flujo:
flowchart LR
A[Dataset UCI] --> B[EDA]
B --> C[Preprocesamiento]
C --> D[Entrenamiento y GridSearchCV]
D --> E[Evaluacion]
E --> F[Modelo exportado]
F --> G[API FastAPI]
Etapas:
data/raw/data.csv.Enrolled, mapeo de Dropout a 1 y Graduate a 0, seleccion de las 18 variables usadas por la API, balanceo con SMOTE y division train/test.models/pipeline_desercion.pkl (ignorado por Git; se regenera con el pipeline).Modelos comparados:
| Modelo | F1 CV | Accuracy test | Precision test | Recall test | F1 test | ROC-AUC test |
|---|---|---|---|---|---|---|
| Regresion Logistica | 0.8802 | 0.9016 | 0.9237 | 0.8643 | 0.8930 | 0.9511 |
| Arbol de Decision | 0.8687 | 0.8971 | 0.9318 | 0.8452 | 0.8864 | 0.9347 |
| Random Forest | 0.8884 | 0.9084 | 0.9357 | 0.8667 | 0.8999 | 0.9560 |
El modelo seleccionado por mejor F1 en validacion cruzada es Random Forest. Para este problema se prioriza F1 y recall de la clase de desercion porque interesa detectar estudiantes en riesgo sin depender solo del accuracy.
Los resultados completos se guardan en:
data/results/resultados_experimentos.csv
Instalar dependencias:
python -m pip install -r requirements.txt
Generar dataset, graficos, resultados y modelo:
python -m notebooks.pipeline
Ejecutar pruebas:
python -m pytest -q
Levantar API:
python main.py
Documentacion interactiva:
http://localhost:8000/docs
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /api | Mensaje de bienvenida |
| GET | /api/salud/ | Verifica que la API esta operativa |
| POST | /api/prediccion/ | Recibe datos del estudiante y devuelve prediccion |
Ejemplo minimo para POST /api/prediccion/:
{
"estado_civil": 1,
"modo_aplicacion": 1,
"orden_aplicacion": 1,
"curso": 1,
"asistencia_diurna_nocturna": 1,
"calificacion_previa": 1,
"nota_admision": 150.0,
"desplazado": 0,
"necesidades_educativas_especiales": 0,
"deudor": 0,
"mensualidades_al_dia": 1,
"genero": 1,
"becario": 0,
"edad_al_matricularse": 20,
"unidades_curriculares_1er_sem_inscritas": 5,
"unidades_curriculares_1er_sem_evaluaciones": 5,
"unidades_curriculares_1er_sem_aprobadas": 5,
"unidades_curriculares_1er_sem_nota": 15.0
}
Respuesta esperada:
{
"estado": 200,
"mensaje": "Prediccion realizada correctamente.",
"datos": {
"prediccion": "Graduado",
"probabilidad": 0.07,
"mensaje": "Prediccion procesada exitosamente por el modelo de IA."
}
}
controllers: capa HTTP.services: reglas de negocio.providers: acceso al modelo entrenado.mappers: conversion entre DTOs y dominio.schemas: contratos de entrada y salida.domain: entidades y contrato de caracteristicas del modelo.core: respuestas, errores y seguridad compartida.El repositorio no versiona data/raw/data.csv ni models/pipeline_desercion.pkl porque son artefactos generados. Para reproducir el backend desde cero se debe instalar dependencias y ejecutar:
python -m notebooks.pipeline
python -m pytest -q
python main.py