Análisis y modelado de dos datasets del anexo del curso: California Housing (regresión) y Fashion-MNIST (clasificación multiclase de imágenes). Cada notebook recorre el pipeline completo — EDA estadístico, feature engineering, progresión de modelos justificada, evaluación en test, interpretabilidad y alternativas — usando los propios hallazgos del EDA para motivar cada decisión de modelado.
| Notebook | Problema | Ejecutar |
|---|---|---|
| 01_california_housing | Regresión (valor mediano de vivienda) | |
| 02_fashion_mnist | Clasificación (10 clases de prendas) |
| Modelo | RMSE | MAE | R² |
|---|---|---|---|
| Baseline (media) | $115,301 | $90,590 | -0.000 |
| Regresión lineal | $67,379 | $49,135 | 0.659 |
| Ridge / Lasso (mejor α por CV) | $67,367 | $49,092 | 0.659 |
| MLP 3×64 (final) | $54,153 | $35,672 | 0.779 |
Toda la familia lineal se estanca en ~$67k — el cuello de botella es la no linealidad geográfica, no la varianza. La red la captura y recorta el error en 20%:
| Modelo | Accuracy | F1 macro |
|---|---|---|
| k-NN k=9 (PCA-50, 10k train) | 0.8237 | 0.8222 |
| Regresión logística softmax | 0.8454 | 0.8443 |
| SVM-RBF (PCA-50, 10k train) | 0.8628 | 0.8619 |
| Random Forest (200 árboles) | 0.8739 | 0.8724 |
| MLP + dropout + batch norm (final) | 0.8833 | 0.8830 |
La progresión instancias → lineal → kernel → ensamble → red gana en cada salto de familia. El grueso del error vive en el triángulo shirt–pullover–coat, tal como lo anticipó la matriz de similitud del EDA antes de entrenar ningún modelo:
├── Examen_Final.ipynb # Anexo original del curso
├── notebooks/
│ ├── 01_california_housing.ipynb # Regresión: EDA → FE → GD a mano → modelos → MLP
│ └── 02_fashion_mnist.ipynb # Clasificación: EDA → PCA/t-SNE → modelos → MLP
├── aportes_maricielo/
│ └── Examen_Final_ML.ipynb # Solución independiente: CNN+augmentation (MNIST)
│ # y MLP sin FE (California Housing)
├── reports/
│ ├── figures/ # Figuras exportadas por los notebooks
│ └── resultados_*.txt # Salidas de texto de la ejecución verificada
├── informe/ # Informe final (PDF)
├── tools/ # Scripts de mantenimiento de los notebooks
└── .github/workflows/validate.yml # CI: valida formato y ejecución de los notebooks
aportes_maricielo/ contiene la solución independiente de Maricielo Valverde: una CNN con
data augmentation sobre MNIST (98.91% en test) y un MLP sobre California Housing con las 8
features crudas (RMSE $65,416 / MAE $45,793). Como ambas soluciones de California Housing
usan el mismo split oficial de Keras, son comparables sobre el mismo test set — y esa
comparación (sin FE vs. con FE: −22% de MAE con una arquitectura más simple) es el eje de
la discusión grupal del informe: la representación de los datos vale más que la profundidad
de la red.
pip install -r requirements.txt
jupyter nbconvert --to notebook --execute --inplace notebooks/01_california_housing.ipynb
jupyter nbconvert --to notebook --execute --inplace notebooks/02_fashion_mnist.ipynbSemillas fijadas (seed=42; split de Keras con su semilla por defecto 113). Los datasets
se descargan automáticamente vía keras.datasets en la primera ejecución. En Windows,
los notebooks desactivan oneDNN (TF_ENABLE_ONEDNN_OPTS=0) para estabilidad de TensorFlow.
- GD, SGD y mini-batch implementados desde cero (NumPy), con la divergencia por colas pesadas documentada y resuelta vía gradient clipping + learning-rate decay.
- Hallazgos del EDA que cambian el modelado: censura del target en $500,001 (4.6% del train), multicolinealidad con VIF ≈ 38, matriz de "confusiones esperadas" entre clases.
- Ablaciones honestas: escaladores, arquitecturas de red, dropout+batchnorm vs early stopping — con lecturas de los resultados reales, incluso cuando rompen el libreto.
- Interpretabilidad: permutation importance implementada a mano, pesos de la logística como plantillas visuales, análisis de errores con ejemplos.
- Nota ética (algorithmic bias): por qué no usamos Boston Housing y por qué la ubicación es un proxy demográfico en modelos de vivienda.

