Ejercicios para que el alumno de la maestría use el Kiro Power Data Science Assistant como asistente integral en proyectos reales de ciencia de datos, desde la ingesta hasta el despliegue. El alumno NO escribe código desde cero: orquesta al Power desde Kiro en modo Vibe coding, revisa lo que produce, lo critica y lo mejora.
Objetivo global: que cada alumno ejecute un ciclo completo de ML supervisado sobre 5 datasets distintos de Kaggle usando el Power, valide su comportamiento, detecte bugs/limitaciones, y entregue retroalimentación para que futuras generaciones lo usen con mayor confianza.
Un Kiro Power es un paquete reutilizable que empaca tres cosas en una sola unidad instalable en Kiro:
- Documentación (
POWER.md) — Qué hace el Power, qué principios sigue, qué librerías cubre. - Steering files — Guías de workflows específicos que Kiro carga en contexto solo cuando las necesita (EDA, entrenamiento, publicación a Kaggle, etc.).
- MCP Servers — Backends que exponen tools reales a Kiro (en este Power: Tavily, Kaggle, Hugging Face y Gradio Docs).
Cuando un Power está instalado, Kiro puede activarlo bajo demanda (action="activate") para cargar toda la documentación y el schema de las tools. Esto mantiene el contexto del chat limpio mientras se tiene acceso a capacidades completas cuando se requieren.
- Arquitectura modular por etapas: cada fase del pipeline es un script independiente (
01_ingest.py,02_eda.py, ...,08_deploy_hf.py). Permite intervención humana entre etapas. - Dos apps Gradio:
app_training(UI local para orquestar el pipeline) yapp_inference(UI pública desplegable a HF Spaces que consume el modelo desde Kaggle). - uv como gestor de entorno obligatorio. Nada de
pip installdirecto. - Licenciamiento Apache 2.0 para todo dataset/modelo publicado, con la tabla de variantes de sintaxis por sistema (Kaggle CLI vs HF vs SPDX).
- Dos credenciales distintas de Kaggle: token
KGAT_para el MCP y API Key (kaggle.json) para el CLI.
Antes de empezar los ejercicios, cada alumno debe instalar el Power en su Kiro:
# Clonar el Power en el directorio de powers de Kiro
git clone https://github.com/gusdelact/kiropowerdatascienceassistant.git ~/.kiro/powers/data-science-assistantLuego configurar los placeholders en mcp.json del Power:
YOUR_TAVILY_API_KEY— desde https://app.tavily.comYOUR_KAGGLE_TOKEN— desde https://www.kaggle.com/settings (Generate New Token, empieza conKGAT_)YOUR_HF_TOKEN— desde https://huggingface.co/settings/tokens (permisos de lectura)
Y además configurar el CLI de Kaggle (necesario para publicar):
# Descargar kaggle.json desde https://www.kaggle.com/settings → API → Create New API Token
cp ~/Downloads/kaggle.json ~/.kaggle/kaggle.json
chmod 600 ~/.kaggle/kaggle.json
uv run kaggle datasets list -s "iris" --max-size 1 # VerificaciónValidar en el chat de Kiro que el Power aparece listado y que activate devuelve los 4 MCP servers esperados.
Cada alumno trabaja los 5 datasets. La diversidad cubre clasificación binaria, multiclase y regresión, con diferentes tipos de "suciedad" en los datos.
| # | Dataset Kaggle | Problema | Target | Modelo sklearn sugerido |
|---|---|---|---|---|
| 1 | uciml/pima-indians-diabetes-database |
Clasificación binaria | Outcome |
LogisticRegression + RandomForestClassifier |
| 2 | yasserh/titanic-dataset |
Clasificación binaria | Survived |
HistGradientBoostingClassifier |
| 3 | uciml/red-wine-quality-cortez-et-al-2009 |
Clasificación multiclase | quality |
RandomForestClassifier con class_weight="balanced" |
| 4 | camnugent/california-housing-prices |
Regresión | median_house_value |
HistGradientBoostingRegressor |
| 5 | blastchar/telco-customer-churn |
Clasificación binaria | Churn |
LogisticRegression en pipeline + XGBClassifier |
Para cada uno de los 5 datasets, el alumno ejecuta el mismo flujo orquestado por el Power. La idea es repetirlo 5 veces para tener señal estadística sobre qué tan bien funciona el Power en escenarios distintos.
Partiendo de un prompt inicial en el chat de Kiro del estilo:
"Usando el Data Science Assistant, crea un proyecto ML supervisado desde el dataset
uciml/pima-indians-diabetes-databasede Kaggle. El problema es clasificación binaria con targetOutcome. El modelo a entrenar esLogisticRegressioncomo baseline yRandomForestClassifierpara comparar."
El alumno debe verificar que el Power:
- Preguntó explícitamente por la fuente de datos antes de empezar (regla obligatoria del Power).
- Inicializó el proyecto con
uv inity agregó dependencias conuv add(jamáspip). - Generó
config.yamlcon los parámetros correctos (kaggle_ref, features, target, modelo, licenciaApache-2.0). - Creó la estructura modular (
scripts/01_ingest.py...scripts/08_deploy_hf.py,data/raw,data/processed,models/,outputs/,cards/,app_training/,app_inference/,lib/). - Ejecutó cada etapa como script independiente con
uv run python scripts/XX_*.py. - Respetó los puntos de intervención humana entre etapas (no se saltó EDA, no entrenó antes de feature engineering).
Por cada dataset, el alumno entrega en una carpeta propia:
-
config.yamlcompleto y coherente con el problema. -
outputs/figures/con mínimo 4 gráficas de EDA (distribución del target, correlación, nulos, outliers). -
models/model.joblibserializado. -
outputs/metrics/metrics.jsoncon métricas apropiadas al tipo de problema:- Clasificación binaria → accuracy, precision, recall, F1, ROC-AUC, matriz de confusión.
- Clasificación multiclase → accuracy, F1 macro, matriz de confusión.
- Regresión → MAE, RMSE, R², gráfica predicho vs real.
-
cards/DATA_CARD.mdycards/MODEL_CARD.mdcompletos. - Dataset curado publicado a Kaggle bajo licencia Apache 2.0.
- Modelo publicado a Kaggle bajo licencia Apache 2.0.
-
app_inference/desplegable a HF Spaces (aunque el despliegue real solo sea obligatorio para 2 de los 5 datasets — ver Parte 2).
| Ejercicio | Dataset | Énfasis especial que debe cubrir el Power |
|---|---|---|
| 1.1 | Pima Diabetes | Detectar que los ceros en Glucose, BloodPressure, SkinThickness, Insulin, BMI son en realidad nulos y aplicar imputación. Reportar ROC-AUC y usar estratificación en el split. |
| 1.2 | Titanic | Manejar nulos heterogéneos (Age numérico, Cabin categórico con >70% nulos). Usar ColumnTransformer en pipeline. Feature engineering de Title desde Name y FamilySize desde SibSp+Parch. |
| 1.3 | Wine Quality | Manejar clases desbalanceadas (calidades 3 y 8 muy raras). Usar class_weight="balanced" o SMOTE. Reportar F1 macro, no accuracy. |
| 1.4 | California Housing | Feature engineering geográfico (clusters de latitude/longitude, distancia a ciudades). Imputación de total_bedrooms. One-hot de ocean_proximity. Transformación logarítmica del target si ayuda. |
| 1.5 | Telco Churn | Limpiar TotalCharges (espacios en blanco que rompen float). Pipeline con ColumnTransformer (muchas categóricas). Evaluar costo de falsos negativos (cliente que se va y no lo detectamos). |
De los 5 datasets, el alumno elige 2 y los lleva hasta producción siguiendo el workflow mlops-deployment del Power.
Requisitos:
- El
app_inference/debe descargar el modelo desde Kaggle en caliente al iniciar el Space (el modelo en Kaggle es la fuente de verdad). - Secretos en HF Spaces:
KAGGLE_USERNAMEyKAGGLE_KEY(no el token KGAT). sdk_versionen el README.md del Space debe coincidir con la versión real de Gradio instalada (uv run python -c "import gradio; print(gradio.__version__)").- El Space debe quedar público y funcionando.
Entregable: 2 URLs de HF Spaces funcionando, con capturas de prueba.
Esta es la parte crítica del trabajo. El alumno no solo usa el Power, lo audita. Las futuras generaciones dependen de esta retroalimentación.
Cada alumno entrega un reporte validacion_power.md con las siguientes secciones.
Marcar con ✅ /
- ¿El Power preguntó explícitamente por la fuente de datos en cada uno de los 5 proyectos?
- ¿Usó siempre
uvy nuncapip installdirecto? - ¿Generó
config.yamlcentralizado y lo respetó (sin parámetros hardcodeados)? - ¿Mantuvo la arquitectura modular por etapas (8 scripts separados)?
- ¿Generó siempre DATA_CARD y MODEL_CARD antes de publicar?
- ¿Usó el nombre correcto de licencia según el contexto (
"Apache 2.0"con espacio en JSON de Kaggle,apache-2.0en YAML de HF,Apache-2.0enconfig.yaml)?
Para cada MCP del Power, reportar:
- Tavily — ¿Las búsquedas de documentación fueron relevantes? ¿El parámetro
libraryacotó correctamente? Casos donde falló. - Kaggle — ¿Qué operaciones funcionaron vía MCP y cuáles requirieron el CLI? Confirmar o desmentir la tabla de limitaciones del
POWER.md. - Hugging Face — ¿Las búsquedas del Hub fueron útiles? ¿El despliegue de Spaces funcionó solo con el MCP o requirió CLI/git manual?
- Gradio Docs — ¿Los schemas devueltos eran actuales y coincidían con la versión instalada?
Para cada uno de los 5 steering files, indicar en cuáles de los 5 datasets se activó y si aportó valor real:
| Steering | Dataset 1 | Dataset 2 | Dataset 3 | Dataset 4 | Dataset 5 | Comentario |
|---|---|---|---|---|---|---|
eda-feature-engineering |
||||||
model-training-validation |
||||||
kaggle-workflows |
||||||
gradio-interfaces |
||||||
mlops-deployment |
Listar problemas concretos con:
- Descripción del bug o limitación.
- Paso del workflow donde ocurrió.
- Dataset(s) donde se presentó.
- Si lo resolviste: cómo. Si no: workaround aplicado.
- Propuesta de mejora concreta para el
POWER.mdo un steering file.
Sección libre donde el alumno responde:
- ¿Qué agregarías al Power? (tools, steering, docs, ejemplos)
- ¿Qué quitarías o simplificarías?
- ¿Qué prompts iniciales funcionaron mejor para arrancar un proyecto?
- ¿Qué dataset recomendarías como "hola mundo" del Power y por qué?
- ¿Qué habilidades de Kiro (hooks, specs, steering propio) complementan bien al Power?
El alumno puede abrir un Pull Request al repositorio del Power (https://github.com/gusdelact/kiropowerdatascienceassistant.git) con:
- Correcciones de bugs detectados en la Parte 3.4.
- Nuevos steering files para casos no cubiertos (por ejemplo: series temporales, NLP, clustering).
- Mejoras de documentación con ejemplos reales extraídos de los 5 proyectos.
- Un nuevo dataset de referencia agregado al
POWER.md.
- Usar siempre
uv(uv init,uv add,uv run). Jamáspip installdirecto nipython -m venv. - Licencia
Apache 2.0para todo dataset/modelo publicado, respetando la variante de sintaxis por sistema. - Nunca subir credenciales reales al repo: usar placeholders (
YOUR_KAGGLE_TOKEN,YOUR_HF_TOKEN,YOUR_TAVILY_API_KEY). - Cada proyecto en una carpeta propia con su
README.md, siguiendo la estructura delPOWER.md. - El reporte de validación (
validacion_power.md) se entrega en un repo público del alumno para que futuras generaciones lo consulten.