es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tutorial de clasificación de imágenes en TensorFlow – Configuración de la matriz de confusión

Estoy siguiendo este tutorial de imágenes de Tensorflow (https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/load_data/images.ipynb#scrollTo=chqakIP14PDm), pero estoy teniendo problemas para configurar una matriz de confusión porque el tutorial no sigue el formato X_prueba, y_prueba que utilizan los ejemplos tradicionales:

Ejemplo:
from sklearn.metrics import classification_report, confusion_matrix
y_proba = model.predict(X_test)
y_pred = np.argmax(y_proba,axis=1)
print(‘Matriz de Confusión’)
print(confusion_matrix(y_pred, y_test))
print(‘Reporte de Clasificación’)
print(classification_report(y_pred, y_test))

¿Cómo puedo configurar una matriz de confusión basada en el tutorial de imágenes de Tensorflow?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El tutorial de imágenes de TensorFlow utiliza un enfoque diferente para dividir los datos en conjuntos de entrenamiento y prueba. En lugar de utilizar los formatos tradicionales X_test e y_test, el tutorial utiliza un test_dataset que contiene tanto las imágenes como sus etiquetas correspondientes. Por lo tanto, para configurar una matriz de confusión basada en el tutorial de imágenes de TensorFlow, necesitamos extraer las imágenes y las etiquetas por separado del test_dataset utilizando el método map().

    Aquí hay un ejemplo de cómo configurar una matriz de confusión:

    # Evaluar el modelo en el conjunto de datos de prueba
    test_loss, test_acc = model.evaluate(test_dataset)
    
    # Extraer imágenes y etiquetas del conjunto de datos de prueba
    test_images = []
    test_labels = []
    
    for image, label in test_dataset.map(lambda x, y: (x, y)):
      test_images.append(image.numpy())
      test_labels.append(label.numpy())
    
    test_images = np.array(test_images)
    test_labels = np.array(test_labels)
    
    # Hacer predicciones en las imágenes de prueba
    y_proba = model.predict(test_images)
    y_pred = np.argmax(y_proba, axis=1)
    
    # Crear matriz de confusión
    conf_mat = np.zeros((num_classes, num_classes))
    for i in range(len(test_labels)):
      conf_mat[test_labels[i], y_pred[i]] += 1
    
    # Imprimir la matriz de confusión y el informe de clasificación
    print('Matriz de Confusión')
    print(conf_mat)
    print('Informe de Clasificación')
    print(classification_report(test_labels, y_pred))
    

    En este ejemplo, primero evaluamos el modelo en el test_dataset. Luego, usamos un bucle for para extraer las imágenes y las etiquetas del test_dataset y agregarlas a dos listas separadas. Convertimos estas listas en matrices numpy y las usamos para hacer predicciones en las imágenes de prueba usando el método predict(). Finalmente, creamos la matriz de confusión iterando sobre los arrays test_labels e y_pred y contando el número de ocurrencias de cada par. Imprimimos la matriz de confusión y el informe de clasificación utilizando el método classification_report() de scikit-learn.

Comments are closed.