Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Redes convolucionales (CNN), Unidad 12 — Mini-proyecto con CNN, 12.1 — Proyecto guiado completo ·

Análisis de resultados

Análisis de resultados

Introducción

El análisis de resultados es un paso crucial en cualquier proyecto basado en redes convolucionales (CNN). Este análisis no solo nos permite evaluar la precisión y eficacia del modelo, sino que también proporciona información valiosa para mejorar futuras iteraciones. En este artículo, exploraremos cómo analizar los resultados de una CNN mediante un mini-proyecto guiado completo.

Explicación principal

Supongamos que estamos trabajando en un proyecto donde la tarea es clasificar imágenes de diferentes tipos de flores. Para ello, hemos construido y entrenado nuestra CNN utilizando el conjunto de datos Flowers Dataset. Aquí te presento cómo analizar los resultados de este modelo.

Configuración del entorno

Primero, asegúrate de tener todo listo:

import numpy as np
from tensorflow.keras.models import load_model
from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# Carga el modelo entrenado
model = load_model('flowers_cnn.h5')

# Cargar los datos de prueba y las etiquetas verdaderas
X_test, y_test = np.load('test_data.npy'), np.load('test_labels.npy')

Evaluación del modelo

Una vez que tienes tu conjunto de datos de prueba listo, puedes evaluar el rendimiento del modelo:

# Evalúa el modelo en los datos de prueba
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Loss: {loss:.4f}, Accuracy: {accuracy * 100:.2f}%")

# Obtiene las predicciones del modelo
y_pred = model.predict(X_test)
y_pred_classes = np.argmax(y_pred, axis=1)

# Genera el informe de clasificación
print("\nInforme de Clasificación:")
print(classification_report(y_test, y_pred_classes))

# Matriz de confusión
cm = confusion_matrix(y_test, y_pred_classes)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.title('Matriz de Confusión')
plt.show()

Errores típicos / trampas

A continuación, analizamos algunos errores comunes que puedes encontrar en el análisis de resultados:

  1. Ruido en la matriz de confusión:
  • Si observas una alta cantidad de falsos positivos o falsos negativos para ciertas clases, es posible que tu modelo no esté aprendiendo adecuadamente las características distintivas de estas clases.
  1. Desbalanceado del conjunto de datos de prueba:
  • Un conjunto de datos de prueba desequilibrado puede dar resultados sesgados. Asegúrate de que el conjunto de pruebas represente bien la distribución real de tus datos.
  1. Problemas con la normalización:
  • Si no has normalizado correctamente los datos, puedes obtener malos resultados en términos de precisión y recall. Asegúrate de seguir las mismas técnicas de normalización que utilizaste durante el entrenamiento del modelo.

Checklist accionable

A continuación, te presentamos una lista de verificación para asegurarte de cubrir todos los aspectos importantes al analizar tus resultados:

  1. Revisar la matriz de confusión:
  • Identifica las clases con mayor número de falsos positivos y negativos.
  1. Evaluar el rendimiento en subconjuntos individuales:
  • Analiza cómo se comporta el modelo en diferentes categorías o subconjuntos del conjunto de datos.
  1. Comparar con otros modelos:
  • Evalúa cómo se compara tu modelo con otros que hayas construido o que se encuentren en el estado de arte.
  1. Análisis de características:
  • Visualiza las feature maps para identificar qué características son importantes para cada clase.
  1. Analizar la curva de pérdida y precisión:
  • Analiza cómo evoluciona la pérdida y precisión durante el entrenamiento y validación.

Cierre: Siguientes pasos

  • Implementar técnicas de regularización: Si observas overfitting, considera implementar técnicas como dropout o data augmentation.
  • Mejorar la arquitectura del modelo: Analiza si es necesario ajustar las capas y tipos de convolución para mejorar el rendimiento.
  • Evaluación en un conjunto de datos real:
  • Prueba tu modelo en conjuntos de datos reales, no solo en los que has entrenado.

Este análisis detallado te permitirá tomar decisiones informadas sobre cómo mejorar tu modelo y abordar cualquier problema identificado.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).