Este proyecto explora técnicas de Aprendizaje Automático No Supervisado, usando PCA y K-Means, y se compara con un modelo supervisado (Random Forest) para clasificar hongos como comestibles (e) o venenosos (p).
🧑💻 Este proyecto fue realizado en solitario, siguiendo buenas prácticas de control de versiones con Git.
- Fuente: Mushroom Dataset - UCI Repository
- Instancias: 8124
- Variables: 21, todas categóricas (forma, color, olor, etc.)
- Variable objetivo:
class(e→ edible / comestible,p→ poisonous / venenoso)
📝 Nota: La columna
odores la que más relación tiene con la clase (class).
El flujo ETL realizado fue:
-
Limpieza de datos
- Eliminadas columnas poco informativas:
veil-typeygill-attachment. - Eliminación de nulos y valores inconsistentes.
- Eliminadas columnas poco informativas:
-
Feature Engineering
- Creación de una columna nueva:
has_odor→ indica si el hongo tiene olor o no. - One-Hot Encoding de todas las variables categóricas.
- Escalado de features con StandardScaler.
- Creación de una columna nueva:
-
Separación de datos
X→ featuresy→ clase (class)
- Cargar y explorar un dataset categórico complejo.
- Preprocesamiento de datos y creación de nuevas variables.
- Reducción de dimensionalidad con PCA.
- Detección de patrones ocultos con K-Means.
- Comparación de desempeño con Random Forest supervisado.
- PCA 2D: Permite visualizar la separabilidad de los hongos comestibles y venenosos.
- Insight visual: Los datos se agrupan naturalmente en varias regiones diferenciadas, confirmando patrones internos.
- Entrenamiento con 10 componentes PCA
- Accuracy: 0.998
- Las predicciones muestran una casi perfecta separación entre clases.
- Esto confirma que la PCA conserva la información relevante para clasificación.
- Número óptimo de clusters: k = 4 (método del codo)
- Los clusters reflejan agrupaciones naturales del dataset, aunque no coinciden 100% con las clases reales.
- Homogeneidad: 0.653
- Completitud: 0.407
El proyecto se desarrolló con la siguiente estructura de ramas:
feature/setup→ creación de la estructura de carpetas y archivos inicialesfeature/eda→ análisis exploratorio de datosfeature/cleaning→ limpieza y feature engineering (has_odor)feature/model→ entrenamiento y evaluación de Random Forest + PCA, y K-Meansdevelop→ integración de todas las funcionalidades y generación del informe ejecutivo
💡 Esto permitió un flujo de trabajo organizado y modular, facilitando pruebas y seguimiento de cambios.
El informe ejecutivo en PDF incluye todas las gráficas y análisis:
report/informe_ejecutivo_mushrooms.pdf- Scatterplots PCA 2D por clase y clusters
- Comparación Random Forest vs K-Means
- Resumen de métricas y observaciones
project-9-Pablo-Rodriguez/
│
├─ data/
│ ├─ raw/
│ │ └─ mushrooms.csv
│ └─ clean/
│ ├─ clean_mushrooms.csv
│ └─ clean_mushrooms.parquet
│
├─ notebooks/
│ ├─ Eda_Mushrooms.ipynb
│ ├─ data_cleaning.ipynb
│ └─ Mushroom_Unsupervised_Learning_PCA_KMeans.ipynb
│
├─ report/
│ └─ informe_ejecutivo_mushrooms.pdf
│
└─ README.md
- El aprendizaje no supervisado permite detectar patrones internos y clusters.
- La PCA facilita la visualización y conserva la información relevante.
- El Random Forest con componentes PCA logra casi predicción perfecta.
- La columna
odory la variablehas_odorson clave para entender la clasificación de los hongos.