Proyecto Educativo - Bootcamp de Inteligencia Artificial Factoría F5
Este es un proyecto académico con fines educativos únicamente. El diseño está inspirado en los portales de la Comunidad de Madrid pero no está afiliado ni representa a ninguna institución oficial.
🚀 Aplicación desplegada: https://student-predictor-oelj.onrender.com/
Nota: El despliegue en Render puede tardar unos segundos en cargar debido al plan gratuito.
Este proyecto implementa un sistema de clasificación multiclase para predecir el éxito académico de estudiantes universitarios. El sistema puede clasificar a los estudiantes en tres categorías:
- Dropout (Abandono)
- Graduate (Graduado)
- Enrolled (Matriculado)
Utiliza técnicas avanzadas de aprendizaje automático, específicamente XGBoost y Random Forest, para realizar predicciones basadas en diversos factores académicos y socioeconómicos.
Multiclass_Clasification/
│
├── 📱 client/ # Frontend React + Tailwind
│ ├── public/
│ ├── src/
│ │ ├── components/ # Componentes React reutilizables
│ │ │ ├── Button.jsx # Botón personalizado con estilos
│ │ │ ├── Navbar.jsx # Navegación principal
│ │ │ ├── Footer.jsx # Pie de página
│ │ │ ├── StudentPredictionForm.jsx # Formulario de predicción
│ │ │ └── PredictionList.jsx # Lista de predicciones históricas
│ │ │
│ │ ├── pages/ # Páginas principales
│ │ │ ├── Prediction.jsx # Página de nueva predicción
│ │ │ └── Monitoring.jsx # Dashboard de seguimiento
│ │ │
│ │ ├── services/ # Comunicación con API
│ │ │ └── studentService.js # Servicio HTTP para backend
│ │ │
│ │ ├── routes/ # Configuración de rutas
│ │ │ └── Routes.jsx # React Router setup
│ │ │
│ │ ├── layout/ # Layout general
│ │ │ └── layout.jsx # Estructura común (navbar+footer)
│ │ │
│ │ └── assets/ # Recursos estáticos
│ │ └── images/ # Imágenes del proyecto
│ │
│ ├── package.json # Dependencias React
│ ├── tailwind.config.js # Configuración Tailwind CSS
│ └── vite.config.js # Configuración Vite
│
├── 🐍 server/ # Backend Python + FastAPI
│ ├── database/ # Gestión de base de datos
│ │ ├── supabase_client.py # Cliente Supabase
│ │ └── migrations.py # Sistema de migración de BD
│ │
│ ├── models/ # Machine Learning & Datos
│ │ ├── model_trainer.py # Entrenamiento XGBoost
│ │ ├── predictor.py # Lógica de predicción ML
│ │ ├── preprocessing.py # Pipeline de preprocesamiento
│ │ ├── schemas.py # Validación Pydantic
│ │ └── checking_data.ipynb # Análisis exploratorio
│ │
│ ├── tests/ # Tests unitarios
│ │ ├── test_predictor.py # Tests del modelo ML
│ │ ├── test_preprocessing.py # Tests del pipeline
│ │ └── test_migrations.py # Tests de BD
│ │
│ ├── artifacts/ # Modelos entrenados (generados)
│ │ ├── xgboost_multiclass_model.pkl # Modelo XGBoost serializado
│ │ └── xgboost_multiclass_pipeline.pkl # Pipeline preprocesamiento
│ │
│ └── main.py # API FastAPI principal
│
├── 📊 data/ # Datasets
│ ├── raw/
│ │ └── raw_data.csv # Datos originales
│ └── processed/
│ └── dataset_procesado.csv # Datos limpios para ML
│
├── 🐳 Docker & Deploy/ # Configuración deployment
│ ├── Dockerfile.backend # Contenedor Python/FastAPI
│ ├── Dockerfile.frontend # Contenedor React/Nginx
│ ├── docker-compose.yml # Orquestación completa
│ ├── nginx.conf # Configuración Nginx
│ ├── render-backend.yaml # Deploy backend Render
│ └── render-frontend.yaml # Deploy frontend Render
│
├── 🔧 Configuración/
│ ├── requirements.txt # Dependencias Python
│ ├── pyproject.toml # Configuración proyecto Python
│ ├── .env_example # Variables de entorno ejemplo
│ ├── .gitignore # Archivos ignorados Git
│ └── init_database.py # Script inicialización BD
│
└── 📖 README.md # Documentación principal
- Python 3.13+
- XGBoost
- Scikit-learn
- FastAPI
- Supabase
- React
- Tailwind CSS
- Vite
- Python 3.13 o superior
- Node.js y npm
- Git
git clone [URL del repositorio]
cd Multiclass_Clasification
python -m venv venv
# Windows
.\venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
pip install -r requirements.txt
# Copiar el archivo de ejemplo
cp .env_example .env
# Editar .env con tus credenciales de Supabase
mkdir -p data/raw data/processed
- Descargar el dataset de Predict students' dropout and academic success
- Colocar el archivo como
data/raw/raw_data.csv
python server/models/model_trainer.py
python init_database.py
uvicorn server.main:app --reload
cd client
npm install
npm run dev
pytest server/tests
Si prefieres usar Docker:
# Configurar variables de entorno
cp .env_example .env
# Ejecutar con Docker Compose
docker-compose up --build
Una vez completada la instalación:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Estado del modelo: http://localhost:8000/model/status
- Ver estudiantes: http://localhost:8000/students
- Predicción multiclase del éxito académico
- Interfaz web interactiva
- API RESTful para predicciones
- Preprocesamiento automático de datos
- Modelos de machine learning optimizados
El proyecto implementa dos modelos principales:
-
XGBoost (Modelo Principal)
- Precisión en conjunto de prueba: ~85%
- Optimizado para manejo de clases desbalanceadas
- Hiperparámetros ajustados mediante Optuna
-
Random Forest (Modelo Alternativo)
- Implementado como modelo de respaldo
- Buena interpretabilidad de características
- Los datos del estudiante se ingresan a través de la interfaz web
- El backend procesa y preprocesa los datos
- El modelo realiza la predicción
- Los resultados se muestran en la interfaz de usuario
Las contribuciones son bienvenidas. Por favor, sigue estos pasos:
- Fork el proyecto
- Crea una rama para tu característica (
git checkout -b feature/AmazingFeature
) - Commit tus cambios (
git commit -m 'Add some AmazingFeature'
) - Push a la rama (
git push origin feature/AmazingFeature
) - Abre un Pull Request
Distribuido bajo la Licencia MIT. Ver LICENSE
para más información.