Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Predicción del Rendimiento Académico de Estudiantes de Madrid

Este proyecto tiene como objetivo predecir la nota final de estudiantes de secundaria en Madrid utilizando modelos de aprendizaje supervisado. Se construyen y comparan dos modelos predictivos: uno que utiliza las notas previas (T1 y T2) y otro que no, permitiendo evaluar el desempeño en ambos escenarios. Además, se incluye una parte creativa de análisis no supervisado (PCA y clustering) para extraer patrones ocultos en los datos.

Autor

Santiago Córdoba Artieda
Ingeniería Matemática e Inteligencia Artificial
Universidad Pontificia de Comillas de Madrid - ICAI

Estructura del proyecto

.
├── config
│   └── hyperparams.json            # Hiperparámetros seleccionados vía GridSearch
│
├── data
│   ├── rendimiento_estudiantes_train.csv     # Dataset original de entrenamiento
│   ├── rendimiento_estudiantes_test_vacio.csv# Test sin variable objetivo (T3)
│   ├── re_train_preprocessed_modelo1.csv     # Train preprocesado para modelo i (con T1 y T2)
│   └── re_train_preprocessed_modelo2.csv     # Train preprocesado para modelo ii (sin T1 y T2)
│
├── notebooks
│   ├── exploratory_data_analysis.ipynb       # Análisis exploratorio y visualización inicial
│   ├── modelo1.ipynb                         # Entrenamiento y evaluación de modelo i
│   ├── modelo2.ipynb                         # Entrenamiento y evaluación de modelo ii
│   └── exploracion_adicional.ipynb          # PCA y clustering (análisis no supervisado)
│
├── src
│   ├── preprocess_data.py                   # Funciones de preprocesado para ambos modelos
│   ├── model_train.py                       # Funciones para entrenar modelo i y ii
│   └── generar_predicciones.py              # Pipeline completo: preprocesa, entrena, predice
│
├── predictions
│   └── predicciones_finales.csv             # Predicciones para el conjunto de test entregable
│
├── reports
│   └── MemoriaML.pdf                        # Informe final en formato NeurIPS
│
└── README.md

Cómo reproducir los resultados

  1. Requisitos previos

Asegurarse de tener Python 3.8+ y las siguientes librerías instaladas:

pip install pandas numpy scikit-learn matplotlib seaborn
  1. Ejecución del pipeline completo

Desde la raíz del proyecto, ejecutar:

python src/generar_predicciones.py

Este script:

  • Preprocesa los datos originales para ambos modelos.
  • Entrena ElasticNet para el modelo (i) y RandomForest para el modelo (ii) con los hipérparametros encontrados en los notebooks guaradados en config/hyperparams.json.
  • Preprocesa el conjunto de test vacío.
  • Genera las predicciones para ambos modelos.
  • Guarda el archivo data/predicciones_finales.csv en el formato requerido.

Descripción de modelos

  • Modelo i: ElasticNet con T1, T2. Alto rendimiento predictivo (R² ≈ 0.91).
  • Modelo ii: RandomForest sin T1, T2. Mejor desempeño entre los no lineales (R² ≈ 0.41).

Exploración adicional

En notebooks/exploracion_adicional.ipynb se encuentra un análisis no supervisado:

  • PCA: Reducción de dimensionalidad para visualizar patrones.
  • Clustering (KMeans y jerárquico): Identificación de subgrupos de estudiantes según características comunes.

El objetivo fue explorar estructuras latentes en el conjunto de datos y descubrir agrupaciones naturales entre los estudiantes.

Licencia

Este proyecto se entrega como parte del curso de Aprendizaje Automático, Universidad Pontificia de Comillas de Madrid - ICAI. Uso académico únicamente.

About

This project aims to predict the final grades of high school students in Madrid using supervised learning models. Additionally, an unsupervised analysis (PCA and clustering) is included to extract hidden patterns in the data.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages