Este proyecto Kedro implementa un pipeline de ciencia de datos de extremo a extremo para clasificar la calidad del vino. La solución utiliza el conjunto de datos "Red Wine Quality", disponible en Kaggle: Wine Quality, que contiene propiedades fisicoquímicas de distintas muestras de vino. El pipeline ingiere estos datos crudos, los procesa para garantizar su calidad, entrena y evalúa múltiples modelos de clasificación (Árbol de Decisión, Random Forest, XGBoost) para predecir si un vino es de "buena" o "mala" calidad, y finalmente, evalúa y visualiza el rendimiento de los modelos.
El objetivo es demostrar un flujo de trabajo de Machine Learning estructurado y reproducible, donde cada paso, desde la limpieza de datos hasta la generación de reportes, está encapsulado en un pipeline modular y robusto.
La hipótesis central de este análisis es que las propiedades fisicoquímicas del vino pueden ser utilizadas para predecir su calidad. Se espera que, mediante algoritmos de clasificación, se pueda construir un modelo capaz de distinguir con alta precisión entre vinos de "buena" y "mala" calidad, basándose en características como la acidez, el alcohol, los sulfatos, etc.
El proyecto se organiza en los siguientes pipelines principales:
data_processing: Se enfoca en la limpieza y preparación inicial de los datos. Toma los datos crudos del vino, elimina filas con valores nulos y duplicados, renombra columnas a español, crea la variable objetivo binariaCalidad_Binariay selecciona las características relevantes. Guarda los datos procesados (processed_wine_data) listos para el modelado.model_training: Contiene la lógica de Machine Learning. Este pipeline:- Divide los datos limpios en conjuntos de entrenamiento y prueba (70/30, estratificado).
- Entrena y ajusta hiperparámetros para tres modelos de clasificación:
DecisionTreeClassifier,RandomForestClassifieryXGBClassifier, utilizando validación cruzada K-Fold (Stratified K-Fold) para una evaluación robusta. - Evalúa cada modelo utilizando métricas como Accuracy, Classification Report y AUC.
- Compara los modelos y selecciona el de mejor rendimiento.
- Guarda el mejor modelo entrenado.
reporting: Se encarga de la visualización de resultados y la comparación de modelos. Carga el mejor modelo entrenado y sus métricas para generar curvas ROC y gráficos de importancia de características, permitiendo una comparación clara de su rendimiento.
- Manejo de Datos Nulos y Duplicados: El pipeline identifica y elimina sistemáticamente registros con valores faltantes y filas duplicadas para asegurar la calidad del dataset.
- Renombrado y Selección de Columnas: Se estandarizaron los nombres de las columnas a español y se seleccionaron las características relevantes para el modelado.
- Creación de Variable Objetivo Binaria: Se transformó la variable
qualityen una variable binariaCalidad_Binaria(0 para "mala" calidad, 1 para "buena" calidad) para el problema de clasificación. - Automatización del Flujo de Datos: Al encapsular todo el proceso de limpieza y preparación en un pipeline de Kedro, se garantiza que los datos para el modelado sean completamente automatizados y reproducibles.
Esta sección presenta las conclusiones detalladas y los artefactos generados por el pipeline de Kedro, que encapsula el proceso de modelado predictivo para la clasificación de la calidad del vino. Hemos realizado un análisis comparativo exhaustivo de tres modelos de clasificación (Árbol de Decisión, Random Forest y XGBoost), incluyendo un riguroso ajuste de hiperparámetros para cada uno mediante validación cruzada K-Fold (Stratified K-Fold).
El pipeline de reporting se encarga de consolidar y visualizar estos resultados, proporcionando una visión clara del rendimiento de cada modelo y los factores clave que influyen en la calidad del vino.
Tras el ajuste de hiperparámetros, el modelo Random Forest demostró ser el más efectivo para este conjunto de datos, obteniendo el mejor rendimiento en la métrica AUC (Area Under the Curve):
- Random Forest (ajustado): AUC = 0.8883
- XGBoost (ajustado): AUC = 0.8782
- Árbol de Decisión (ajustado): AUC = 0.8169
Este resultado sugiere que, para el problema de clasificación de la calidad del vino en este dataset, el Random Forest es el modelo más robusto y con mayor capacidad para distinguir entre vinos de "buena" y "mala" calidad.
El pipeline genera curvas ROC para el mejor modelo ajustado, permitiendo una comparación visual directa de su capacidad discriminatoria. A continuación, se muestra la curva ROC para el mejor modelo:
Además, se generan gráficos de importancia de características para entender qué propiedades fisicoquímicas son más relevantes para la predicción de la calidad del vino. Aquí un ejemplo para el mejor modelo:
El gráfico de importancia de características revela que no todas las propiedades fisicoquímicas influyen de la misma manera en la calidad del vino. Las conclusiones clave son:
- El
Alcoholes el factor más determinante, siendo el predictor más fuerte para el modelo. - Los
Sulfatosy laAcidez_Volatille siguen como las características más influyentes. - Esto sugiere que, para este conjunto de datos, la calidad del vino está fuertemente asociada a su graduación alcohólica, su nivel de sulfatos y su acidez volátil.
El proceso de ajuste de hiperparámetros mediante GridSearchCV, utilizando validación cruzada K-Fold, fue fundamental para optimizar el rendimiento de todos los modelos. Se observaron mejoras significativas en el AUC para el Árbol de Decisión y el Random Forest. Aunque el AUC de XGBoost se mantuvo en 0.87 después del ajuste, esto indica que los parámetros iniciales ya eran bastante competitivos o que el rango de búsqueda explorado no reveló mejoras significativas adicionales.
Como era de esperar, tanto Random Forest como XGBoost, al ser algoritmos de ensamble (que combinan múltiples árboles de decisión), superaron consistentemente al modelo de Árbol de Decisión individual. Los modelos de ensamble son inherentemente más robustos, reducen el sobreajuste y mejoran la capacidad de generalización.
Aunque XGBoost es un algoritmo de alto rendimiento en muchas competiciones de Machine Learning, en este caso particular, el Random Forest demostró ser ligeramente superior. Esta observación resalta la importancia de:
- Evaluar múltiples algoritmos: No hay un "mejor" algoritmo universal; el rendimiento óptimo depende de las características específicas del dataset.
- Ajuste exhaustivo: Cada algoritmo requiere un ajuste cuidadoso de sus hiperparámetros para maximizar su potencial en un problema dado.
Todos los modelos proporcionaron información valiosa sobre la importancia de las características. Esta información es crucial para comprender qué propiedades fisicoquímicas del vino son los factores más influyentes en su calidad percibida. Estos conocimientos pueden ser utilizados para:
- Refinar el modelo en futuras iteraciones.
- Obtener insights sobre el proceso de producción del vino.
En resumen: El Random Forest es el modelo recomendado para la clasificación de la calidad del vino en este proyecto, debido a su consistente y superior rendimiento en términos de AUC después de un riguroso ajuste de hiperparámetros.
Sigue estos pasos para configurar y ejecutar el proyecto en tu máquina local. Se requiere Python 3.11.9.
Primero, clona este repositorio en tu máquina.
git clone https://github.com/J-Lopez-IICG/DataWineKedro.git
cd DataWineKedroEs una práctica recomendada utilizar un entorno virtual para aislar las dependencias del proyecto.
# Crear el entorno virtual
python -m venv venv
# Activar en Windows (PowerShell)
.\venv\Scripts\Activate.ps1
# Activar en macOS/Linux
# source venv/bin/activateUna vez que el entorno virtual esté activado, instala todas las librerías necesarias.
pip install -r requirements.txtCon las dependencias instaladas, puedes ejecutar el pipeline completo con un solo comando.
kedro runEsto ejecutará todos los nodos en secuencia, generando los datos limpios, el modelo entrenado y la gráfica de resultados en la carpeta data/.
La carpeta notebooks contiene los Jupyter Notebooks utilizados durante la fase de exploración y desarrollo.
Para trabajar con ellos de forma interactiva dentro del contexto de Kedro, ejecuta:
kedro jupyter lab
# o también
kedro jupyter notebookNota: Al usar estos comandos, Kedro inicia el notebook con las variables
context,session,catalogypipelinesya cargadas, facilitando la interacción con los datos y funciones del proyecto.
- No elimines ninguna línea del archivo
.gitignore. - No subas datos al repositorio (la carpeta
data/está ignorada por defecto). - No subas credenciales o configuraciones locales. Mantenlas en la carpeta
conf/local/.

