Proyecto de clasificación binaria que predice si un paquete de ramen va a ser bien valorado ("bueno") o no ("malo"), a partir de atributos categóricos como marca, estilo de preparación y país de origen.
El dataset utilizado (Ramen Ratings, ~2.500 reseñas de theramenrater.com) incluye marca, variedad, estilo, país y una calificación en estrellas (0 a 5) por producto. A partir de esa calificación se construyó una variable binaria de calidad (Stars >= 4 → "bueno") y se entrenaron modelos para predecirla usando únicamente atributos categóricos del producto, sin acceso directo a la calificación.
- Calidad de datos: limpieza de nulos, normalización del campo
Stars(manejo del valor "Unrated"), tratamiento de la columnaTop Ten, eliminación de columnas irrelevantes para el modelo (Review #,Variety). - Definición del target:
is_good = 1siStars >= 4,0en caso contrario. - Preprocesamiento: codificación one-hot de variables categóricas (
Brand,Style,Country) y separación train/test estratificada. - Modelado: entrenamiento y ajuste de hiperparámetros (GridSearchCV, 5-fold CV, scoring F1) para dos modelos:
- Regresión Logística
- SVM (kernel lineal y RBF)
- Evaluación: Accuracy, Precision, Recall, F1-score y AUC-ROC, con matrices de confusión y curvas ROC comparativas.
Una primera versión de este análisis incluía Stars (la variable de la que depende directamente el target) entre las features del modelo, lo que producía métricas perfectas (1.0) de forma artificial — el modelo no estaba aprendiendo un patrón real, sino replicando el umbral usado para construir el target. En la versión final, Stars y Top Ten fueron excluidas de las variables predictoras, dejando como features únicamente Brand, Style y Country. Esto refleja un problema más realista y más difícil: predecir calidad percibida a partir de atributos del producto conocidos de antemano, no a partir de la calificación misma.
| Métrica | Regresión Logística | SVM (kernel lineal) |
|---|---|---|
| Accuracy | 0.70 | 0.72 |
| Precision | 0.65 | 0.68 |
| Recall | 0.70 | 0.66 |
| F1-score | 0.67 | 0.67 |
| AUC-ROC | 0.73 | 0.72 |
Ambos modelos muestran un desempeño similar. Se optó por la Regresión Logística como modelo final por su interpretabilidad y menor costo computacional, dado el empate técnico en F1-score.
- Python (pandas, scikit-learn, seaborn, matplotlib)
- Regresión Logística, SVM
- GridSearchCV para búsqueda de hiperparámetros
ramen_clasificacion_calidad.ipynb: notebook completo con EDA, preprocesamiento, entrenamiento, ajuste de hiperparámetros y evaluación de modelos.
Proyecto desarrollado como parte de mi formación en Data Science (bootcamp Desafío Latam).