Este proyecto desarrolla un flujo completo de análisis y modelado sobre el Mushroom Dataset del UCI Repository, con el objetivo de:
- Transformar un dataset categórico complejo en una matriz apta para modelado.
- Analizar patrones estructurales mediante técnicas estadísticas y visuales.
- Aplicar reducción de dimensionalidad (PCA).
- Detectar estructuras latentes con K-Means Clustering.
- Comparar los resultados de aprendizaje no supervisado con un modelo supervisado (Random Forest).
El proyecto está estructurado en tres notebooks independientes que siguen un pipeline lógico:
- Limpieza y transformación
- Análisis exploratorio (EDA)
- Modelado y comparación
🔗 UCI Mushroom Dataset
- Cada fila representa un hongo.
- Todas las variables son categóricas nominales.
- Variable objetivo:
e→ ediblep→ poisonous
| Archivo | Descripción |
|---|---|
cleaning.ipynb |
Limpieza, tipado y transformación inicial del dataset |
eda.ipynb |
Análisis exploratorio univariado, bivariado y multivariado |
machine_learning.ipynb |
Modelado con PCA, KMeans y Random Forest |
data/clean/agaricus-lepiota |
Dataset limpio exportado |
- Asignación manual de nombres de columnas según documentación oficial.
- Conversión de variables a tipo
category. - Mapeo semántico de valores (ej.
p→ poisonous).
- Eliminación de columna constante (
veil-type). - Detección y análisis de valores nulos.
- Imputación de valores faltantes en
stalk-rootusando la moda. - Validación de unicidad y estructura final.
El dataset limpio se exporta para su uso posterior en formato parquet.
El EDA se desarrolla en tres niveles:
- Distribución de la variable objetivo.
- Conteo de categorías por variable.
- Identificación de dominancias y posibles sesgos.
- Comparación de cada variable respecto a la clase (edible vs poisonous).
- Visualización de proporciones.
- Identificación de variables con alta capacidad discriminatoria.
- Test Chi-cuadrado para medir asociación entre variables y la clase.
- Ranking de fuerza estadística.
- Identificación de predictores clave (ej.
odor).
- Algunas variables muestran una separación casi determinista entre clases.
- El olor aparece como uno de los predictores más fuertes.
- Las combinaciones de variables mejoran la discriminación frente a variables aisladas.
- Conversión de variable objetivo a formato binario (LabelEncoder).
- One-Hot Encoding sobre variables categóricas.
- Separación en
Xey. - División en train/test (80/20).
- Uso consistente de
random_state=42.
- Aplicación de PCA para visualización en 2 componentes.
- Evaluación del impacto del número de componentes en rendimiento.
- Estudio del trade-off entre dimensionalidad y accuracy.
- Análisis del rendimiento del modelo con distintos números de componentes (2 a 28).
- Entrenamiento con todas las features codificadas.
- Evaluación de accuracy.
- Comparación:
- Random Forest sin PCA.
- Random Forest con PCA reducido.
Determinar si la reducción de dimensionalidad mantiene la señal predictiva sin degradar el rendimiento.
- Determinación del número óptimo de clusters.
- Entrenamiento con:
- Features originales.
- Features reducidas por PCA.
- Visualización de clusters en 2D.
- Comparación entre clusters y clases reales (sin usar etiquetas durante entrenamiento).
Se analiza la correspondencia entre clusters y etiquetas reales para evaluar:
- Si la estructura natural del dataset separa correctamente setas comestibles y venenosas.
- Si el problema puede abordarse desde segmentación no supervisada.
| Modelo | Tipo | Uso de PCA | Objetivo |
|---|---|---|---|
| Random Forest | Supervisado | No | Línea base |
| Random Forest | Supervisado | Sí | Evaluar reducción |
| K-Means | No supervisado | Sí/No | Descubrir estructura latente |
- El dataset presenta variables con alta capacidad discriminatoria.
- La reducción con PCA permite compresión significativa manteniendo rendimiento.
- El clustering muestra estructuras que parcialmente coinciden con las clases reales.
- El aprendizaje no supervisado puede aproximarse al problema, pero el modelo supervisado ofrece mayor precisión.
Este proyecto demuestra:
- Dominio del flujo completo de Data Science.
- Gestión avanzada de variables categóricas.
- Aplicación combinada de técnicas supervisadas y no supervisadas.
- Capacidad de análisis estadístico e interpretación de resultados.
- Python 3.10+
- Pandas
- NumPy
- Matplotlib
- Seaborn
- Scikit-learn:
- PCA
- KMeans
- RandomForestClassifier
- Train/Test Split
- OneHotEncoder
- LabelEncoder
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
jupyter notebook