Este proyecto analiza y predice el rendimiento académico de estudiantes a partir de variables socioeducativas usando Machine Learning supervisado en Python.
El dataset (obtenido de Kaggle) contiene registros de ~1.000 estudiantes con las variables:
- Género
- Grupo étnico
- Nivel educativo de los padres
- Tipo de almuerzo escolar
- Curso de preparación para exámenes
- Notas en matemáticas, lectura y escritura
- https://www.kaggle.com/datasets/bhavikjikadara/student-study-performance
Se crea la variable objetivo score (promedio de math_score, reading_score y writing_score) y se comparan dos modelos:
- Regresión Lineal
- Random Forest Regressor
Incluye: preprocesamiento (One-Hot y Ordinal Encoding), división train/test y evaluación con MSE.
- Python 3.12
- Pandas, NumPy
- Scikit-learn
- Jupyter Notebook
STUDY_PERFORMANCE/
├─ Study_perfomance.ipynb · Notebook principal
├─ study_performance.csv · Dataset (opcional, puede excluirse)
└─ .gitignore · Exclusiones (venv/, .idea/, .vscode/, etc.)
Nota: El entorno virtual (
venv/) y configuraciones de IDE están excluidos por.gitignore.
- One-Hot Encoding: género, grupo étnico, tipo de almuerzo, test_prep_course, etc.
- Ordinal Encoding: nivel educativo de los padres (orden lógico, p. ej. “some high school” → … → “master’s degree”).
- Target:
score = mean([math_score, reading_score, writing_score]).
- Split:
train_test_split(X, y, test_size=0.2, random_state=21) - Modelos entrenados:
LinearRegression()RandomForestRegressor(n_estimators=100, random_state=42)
- Métrica: MSE (Mean Squared Error) sobre conjunto de test.
- Random Forest Regressor · MSE ≈ 2.11
- Linear Regression · MSE ≈ 1.65
Los valores pueden variar levemente según la semilla y el dataset usado.
-
Crear y activar entorno virtual
- En Linux/Mac:
- python3 -m venv venv
- source venv/bin/activate
- En Windows:
- python -m venv venv
- venv\Scripts\activate
- En Linux/Mac:
-
Instalar dependencias mínimas
- pip install --upgrade pip
- pip install pandas numpy scikit-learn jupyter matplotlib
-
Abrir el notebook
- jupyter notebook
- Abrir Study_perfomance.ipynb y ejecutar las celdas en orden.
Si usas VS Code, selecciona el kernel del
venv(arriba a la derecha del notebook).
- Entorno y cachés:
- venv/, .env/, .venv/
- pycache/, *.pyc, .pytest_cache/, .mypy_cache/
- IDE:
- .idea/, .vscode/, .code-workspace
- Jupyter:
- .ipynb_checkpoints/
- Datos/artefactos grandes (ajústalo a tu repo):
- *.png, *.jpg, *.jpeg, *.pdf, *.html
- *.csv (si no quieres versionar el dataset; si sí lo quieres, quita esta línea)
- Fija
random_stateentrain_test_splity en los modelos. - Documenta la versión de Python y librerías (puedes exportar con
pip freeze > requirements.txt).
- El dataset puede incluirse o no en el repo (según tamaño/licencia).
- Para resultados consistentes, mantén el mismo preprocesamiento y orden de columnas entre entrenamiento e inferencia.
Este proyecto es de uso educativo. Ajusta la licencia según tus necesidades (MIT, Apache-2.0, etc.).