Ejemplo de uso de matriz de confusión para evaluar la calidad de la salida de un clasificador en el conjunto de datos del iris. Los elementos diagonales representan el número de puntos para los cuales la etiqueta predicha es igual a la etiqueta verdadera, mientras que los elementos fuera de la diagonal son aquellos que están mal etiquetados por el clasificador. Cuanto más altos sean los valores diagonales de la matriz de confusión, mejor, lo que indica muchas predicciones correctas.
Las figuras muestran la matriz de confusión con y sin normalización por tamaño de apoyo de clase (número de elementos en cada clase). Este tipo de normalización puede ser interesante en caso de desequilibrio de clases para tener una interpretación más visual de qué clase se está clasificando erróneamente.
Aquí los resultados no son tan buenos como podrían ser, ya que nuestra elección para el parámetro de regularización C no fue la mejor. En aplicaciones de la vida real, este parámetro generalmente se elige usando Ajuste de los hiperparámetros de un estimador.
Fuera:
Confusion matrix, without normalization [[13 0 0] [ 0 10 6] [ 0 0 9]] Normalized confusion matrix [[1. 0. 0. ] [0. 0.62 0.38] [0. 0. 1. ]]
print(__doc__)import numpy as np import matplotlib.pyplot as plt from sklearn import svm, datasets from sklearn.model_selection import train_test_split from sklearn.metrics import plot_confusion_matrix # import some data to play with iris = datasets.load_iris() X = iris.data y = iris.target class_names = iris.target_names # Split the data into a training set and a test set X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)# Run classifier, using a model that is too regularized (C too low) to see# the impact on the results classifier = svm.SVC(kernel='linear', C=0.01).fit(X_train, y_train) np.set_printoptions(precision=2)# Plot non-normalized confusion matrix titles_options =[("Confusion matrix, without normalization",None),("Normalized confusion matrix",'true')]for title, normalize in titles_options: disp = plot_confusion_matrix(classifier, X_test, y_test, display_labels=class_names, cmap=plt.cm.Blues, normalize=normalize) disp.ax_.set_title(title)print(title)print(disp.confusion_matrix) plt.show()
Tiempo total de ejecución del script: (0 minutos 0,328 segundos)
Download Python source code: plot_confusion_matrix.py
Download Jupyter notebook: plot_confusion_matrix.ipynb
Comentarios y puntuaciones
Si sostienes algún recelo o capacidad de afinar nuestro escrito eres capaz de dejar una explicación y con gusto lo estudiaremos.