/ Proyectos / AgriTech / Clasificación de degradación
Clasificación de degradación de pastizales con NDVI: optimizando datos satelitales de Sentinel-2 y Landsat
Estimación de biomasa y clasificación de degradación combinando imágenes hiperespectrales, composición florística y caracterización de suelo.
El objetivo era clasificar el grado de degradación de pastizales y estimar su biomasa combinando imágenes hiperespectrales con datos de campo, sobre composición florística, caracterización de suelo e índices de vegetación (NDVI, GNDVI, SAVI, entre otros). El problema real: la degradación se calculó con una sola imagen satelital, así que todas las parcelas quedaron con la misma etiqueta.
Se entrenaron SVM y Random Forest sobre esos mismos datos; Random Forest obtuvo un RMSE de 284.33 en biomasa frente a 831.58 del SVM. Pero el hallazgo más importante fue otro: el modelo de clasificación entrenado en la cuenca de Pomacochas solo alcanzó 30% de accuracy al probarse en la cuenca de Ventilla — no generalizó entre cuencas.
Mapa del casoContenido
- Diagrama de la solución. Los bloques del pipeline, de las fuentes hiperespectrales a la predicción final
- Construcción de la solución. Cómo el terreno real dirigió cada decisión
- Condiciones del proyecto. Restricciones reales y opciones descartadas antes de construir
- Pasos. Qué se dejó al agente y qué criterio se aplicó en cada uno
- Proceso de iteración. El ajuste documentado cuando el resultado no fue el esperado
- Descargables. Notebook, diagrama y repositorio del proyecto
- Lecciones importantes. La lección concreta que deja este caso
Estructura de alto nivelDiagrama de la solución
Pasa el cursor sobre cada bloque para ver qué hace ese paso.
Los dos datasets (Pomacochas y Ventilla) se mantuvieron separados desde el preprocesamiento porque su composición florística difiere — unirlos antes de tiempo habría escondido justo la limitación de generalización que el proyecto terminó revelando.
Cómo se construyóConstrucción de la solución
Condiciones del proyecto
| Restricción | Dato |
|---|---|
| Imágenes hiperespectrales disponibles | Una sola imagen, misma degradación asignada a todas las parcelas |
| Bandas por imagen | 10 bandas (no 3 como en RGB), requiere rasterio |
| Cuencas con composición florística distinta | Pomacochas y Ventilla |
| Datos de campo | Pocos registros por cuenca |
| Opción | Por qué se descartó |
|---|---|
| Un solo modelo entrenado con ambas cuencas mezcladas | La composición florística difiere entre cuencas — mezclar hubiera ocultado la limitación real de generalización |
| One-hot encoding para todas las familias botánicas | Demasiadas categorías — dispararía la dimensionalidad del dataset |
| Label encoding para familias + one-hot solo para forrajera/no forrajera | Mantiene la dimensionalidad manejable sin perder la variable categórica de familia |
Pasos
Cálculo de índices de vegetación desde las bandas hiperespectrales
Agente: propuso las fórmulas estándar de NDVI, GNDVI y SAVI.
Criterio aplicado: validar manualmente qué banda de las 10 correspondía a cada longitud de onda antes de aplicar la aritmética — un error aquí invalida todos los índices derivados.
Codificación de variables categóricas
Agente: sugirió one-hot encoding para todas las variables categóricas por defecto.
Criterio aplicado: usar label encoding para familia botánica por su alta cardinalidad, y reservar one-hot solo para forrajera/no forrajera.
Entrenamiento de SVM y Random Forest
Agente: generó el pipeline estándar de scikit-learn para ambos modelos.
Criterio aplicado: comparar ambos con RMSE en vez de asumir que el modelo más complejo (SVM) sería el mejor — Random Forest terminó ganando.
Validación cruzada entre cuencas
Agente: no propuso esta prueba por defecto.
Criterio aplicado: decisión propia de probar el modelo entrenado en Pomacochas contra los datos de Ventilla, para detectar si el modelo generalizaba entre cuencas antes de entregarlo como válido.
Proceso de iteración
Ajuste documentado, no forzado
Al notar que todas las parcelas quedaron con la misma etiqueta de degradación (por depender de una sola imagen), ambos modelos de clasificación predijeron "no degradado" para cualquier cuenca. En vez de forzar una interpretación distinta del resultado, se documentó como limitación conocida del dataset, no como falla del modelo.
CierreLecciones importantes
El reto no fue entrenar el modelo, fue que la degradación se calculó a partir de una sola imagen satelital, así que todas las parcelas terminaron con la misma etiqueta — ningún modelo puede aprender una variable objetivo que no varía.