Main Content

confusionchart

Crear una gráfica de matriz de confusión para un problema de clasificación

Descripción

ejemplo

confusionchart(trueLabels,predictedLabels) crea una gráfica de matriz de confusión a partir de etiquetas verdaderas trueLabels y etiquetas predichas predictedLabels, y devuelve un objeto ConfusionMatrixChart. Las filas de la matriz de confusión corresponden a la clase verdadera y las columnas a la clase predicha. Las celdas en diagonal y las que no están en diagonal se corresponden, respectivamente, con las observaciones que están clasificadas correcta e incorrectamente. Use cm para modificar la gráfica de matriz de confusión una vez creada. Para obtener una lista de propiedades, consulte ConfusionMatrixChart Properties.

ejemplo

confusionchart(m) crea una gráfica de matriz de confusión a partir de la matriz de confusión numérica m. Use esta sintaxis si ya tiene una matriz de confusión numérica en el área de trabajo.

ejemplo

confusionchart(m,classLabels) especifica etiquetas de clase que aparecen a lo largo de los ejes x e y. Use esta sintaxis si ya tiene una matriz de confusión numérica y etiquetas de clase en el área de trabajo.

confusionchart(parent,___) crea la gráfica de confusión en la figura, panel o pestaña especificados por parent.

confusionchart(___,Name,Value) especifica propiedades ConfusionMatrixChart adicionales usando uno o más argumentos de par nombre-valor. Especifique las propiedades después del resto de los argumentos de entrada. Para obtener una lista de propiedades, consulte ConfusionMatrixChart Properties.

cm = confusionchart(___) devuelve el objeto ConfusionMatrixChart. Use cm para modificar propiedades de la gráfica después de crearla. Para obtener una lista de propiedades, consulte ConfusionMatrixChart Properties.

Ejemplos

contraer todo

Cargue una muestra de etiquetas predichas y verdaderas para tratar un problema de clasificación. trueLabels son las etiquetas verdaderas de un problema de clasificación de imágenes y predictedLabels son las predicciones de una red neuronal convolucional.

load('Cifar10Labels.mat','trueLabels','predictedLabels');

Cree una gráfica de matriz de confusión.

figure
cm = confusionchart(trueLabels,predictedLabels);

Figure contains an object of type ConfusionMatrixChart.

Modifique la apariencia y el comportamiento de la gráfica de matriz de confusión cambiando los valores de las propiedades. Añada resúmenes de columnas y filas y un título. Un resumen de columnas normalizadas muestra el número de observaciones clasificadas correcta e incorrectamente por cada clase predicha como porcentajes del número de observaciones de la clase predicha correspondiente. Un resumen de filas normalizadas muestra el número de observaciones clasificadas correcta e incorrectamente por cada clase verdadera como porcentajes del número de observaciones de la clase verdadera correspondiente.

cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';
cm.Title = 'CIFAR-10 Confusion Matrix';

Figure contains an object of type ConfusionMatrixChart. The chart of type ConfusionMatrixChart has title CIFAR-10 Confusion Matrix.

Puede usar confusionchart para crear una gráfica de matriz de confusión a partir de una matriz de confusión numérica.

Cargue una matriz de confusión m de muestra y las etiquetas de clase classLabels asociadas.

load('Cifar10ConfusionMat.mat','m','classLabels');
m
m = 10×10

   923     4    21     8     4     1     5     5    23     6
     5   972     2     0     0     0     0     1     5    15
    26     2   892    30    13     8    17     5     4     3
    12     4    32   826    24    48    30    12     5     7
     5     1    28    24   898    13    14    14     2     1
     7     2    28   111    18   801    13    17     0     3
     5     0    16    27     3     4   943     1     1     0
     9     1    14    13    22    17     3   915     2     4
    37    10     4     4     0     1     2     1   931    10
    20    39     3     3     0     0     2     1     9   923

classLabels
classLabels = 10x1 categorical
     airplane 
     automobile 
     bird 
     cat 
     deer 
     dog 
     frog 
     horse 
     ship 
     truck 

Cree una gráfica de matriz de confusión a partir de la matriz de confusión numérica y las etiquetas de clase.

cm = confusionchart(m,classLabels);

Figure contains an object of type ConfusionMatrixChart.

Cargue una muestra de etiquetas predichas y verdaderas para un problema de clasificación. trueLabels son las etiquetas verdaderas de un problema de clasificación de imágenes y predictedLabels son las predicciones de una red neuronal convolucional. Crear una gráfica de matriz de confusión con resúmenes de columnas y filas

load('Cifar10Labels.mat','trueLabels','predictedLabels');
figure
cm = confusionchart(trueLabels,predictedLabels, ...
    'ColumnSummary','column-normalized', ...
    'RowSummary','row-normalized');

Figure contains an object of type ConfusionMatrixChart.

Para ordenar las clases de la matriz de confusión según la recuperación por clase (tasa de positivos verdaderos), normalice los valores de las celdas en cada fila, es decir, según el número de observaciones que tengan la misma clase verdadera. Ordene las clases por los valores de las celdas diagonales correspondientes y restablezca la normalización de los valores de las celdas. Ahora, las clases están ordenadas de forma que los porcentajes de las celdas azules de los resúmenes de filas de la derecha están en orden descendente.

cm.Normalization = 'row-normalized';
sortClasses(cm,'descending-diagonal');
cm.Normalization = 'absolute';

Figure contains an object of type ConfusionMatrixChart.

Para ordenar las clases según la precisión por clase (valor predictivo positivo), normalice los valores de las celdas en cada fila, es decir, según el número de observaciones que tengan la misma clase predicha. Ordene las clases por los valores de las celdas diagonales correspondientes y restablezca la normalización de los valores de las celdas. Ahora, las clases están ordenadas de forma que los porcentajes de las celdas azules de los resúmenes de columnas del final están en orden descendente.

cm.Normalization = 'column-normalized';
sortClasses(cm,'descending-diagonal');
cm.Normalization = 'absolute';

Figure contains an object of type ConfusionMatrixChart.

Argumentos de entrada

contraer todo

Etiquetas verdaderas del problema de clasificación, especificadas como un vector categórico, un vector numérico, un vector de cadena, un arreglo de caracteres, un arreglo de celdas de vectores de caracteres o un vector lógico. Si trueLabels es un vector, cada elemento corresponde a una observación. Si trueLabels es un arreglo de caracteres, debe ser bidimensional y cada fila debe corresponder a la etiqueta de una observación.

Etiquetas predichas del problema de clasificación, especificadas como un vector categórico, un vector numérico, un vector de cadena, un arreglo de caracteres, un arreglo de celdas de vectores de caracteres o un vector lógico. Si predictedLabels es un vector, cada elemento corresponde a una observación. Si predictedLabels es un arreglo de caracteres, debe ser bidimensional y cada fila debe corresponder a la etiqueta de una observación.

Matriz de confusión, especificada como matriz. m debe ser cuadrada y sus elementos deben ser enteros positivos. El elemento m(i,j) es el número de veces que se predijo que una observación de la i-ésima clase verdadera era de la j-ésima clase. Cada celda coloreada de la gráfica de matriz de confusión corresponde a un elemento de la matriz de confusión m.

Etiquetas de clase de la gráfica de matriz de confusión, especificadas como un vector categórico, un vector numérico, un vector de cadena, un arreglo de caracteres, un arreglo de celdas de vectores de caracteres o un vector lógico. Si classLabels es un vector, debe tener tantos elementos como filas y columnas tenga la matriz de confusión. Si classLabels es un arreglo de caracteres, debe ser bidimensional y cada fila debe corresponder a la etiqueta de una clase.

Contenedor principal, especificado como un objeto Figure, Panel, Tab, TiledChartLayout o GridLayout.

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

En las versiones anteriores a la R2021a, use comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: cm = confusionchart(trueLabels,predictedLabels,'Title','My Title Text','ColumnSummary','column-normalized')

Nota

Las propiedades incluidas en esta lista son únicamente un subconjunto. Para obtener una lista completa, consulte ConfusionMatrixChart Properties.

Título de la gráfica de matriz de confusión, especificado como un vector de caracteres o un escalar de cadena.

Ejemplo: cm = confusionchart(__,'Title','My Title Text')

Ejemplo: cm.Title = 'My Title Text'

Resumen de columna de la gráfica de matriz de confusión, especificado como una de las siguientes opciones:

OpciónDescripción
'off'No se muestra un resumen de columna.
'absolute'Se muestra el número total de observaciones clasificadas correcta e incorrectamente por cada clase predicha.
'column-normalized'Se muestra el número de observaciones clasificadas correcta e incorrectamente por cada clase predicha como porcentajes del número de observaciones de la clase predicha correspondiente. Los porcentajes de las observaciones clasificadas correctamente pueden verse como precisiones por clase (o valores predictivos positivos).
'total-normalized'Se muestra el número de observaciones clasificadas correcta e incorrectamente por cada clase predicha como porcentajes del número total de observaciones.

Ejemplo: cm = confusionchart(__,'ColumnSummary','column-normalized')

Ejemplo: cm.ColumnSummary = 'column-normalized'

Resumen de fila de la gráfica de matriz de confusión, especificado como una de las siguientes opciones:

OpciónDescripción
'off'No se muestra un resumen de fila.
'absolute'Se muestra el número total de observaciones clasificadas correcta e incorrectamente por cada clase verdadera.
'row-normalized'Se muestra el número de observaciones clasificadas correcta e incorrectamente por cada clase verdadera como porcentajes del número de observaciones de la clase verdadera correspondiente. Los porcentajes de las observaciones clasificadas correctamente pueden verse como recuperaciones por clase (o tasas de positivos verdaderos).
'total-normalized'Se muestra el número de observaciones clasificadas correcta e incorrectamente por cada clase verdadera como porcentajes del número total de observaciones.

Ejemplo: cm = confusionchart(__,'RowSummary','row-normalized')

Ejemplo: cm.RowSummary = 'row-normalized'

Normalización de los valores de celda, especificados como una de las siguientes opciones:

OpciónDescripción
'absolute'Se muestra el número total de observaciones en cada celda.
'column-normalized'Se normaliza cada valor de celda según el número de observaciones que tenga la misma clase predicha.
'row-normalized'Se normaliza cada valor de celda según el número de observaciones que tenga la misma clase verdadera.
'total-normalized'Se normaliza cada valor de celda según el número total de observaciones.

Modificar la normalización de los valores de celda también afecta a los colores de las celdas.

Ejemplo: cm = confusionchart(__,'Normalization','total-normalized')

Ejemplo: cm.Normalization = 'total-normalized'

Argumentos de salida

contraer todo

Objeto ConfusionMatrixChart, que es una visualización independiente. Use cm para configurar las propiedades de la gráfica de matriz de confusión después de crearla.

Limitaciones

  • La generación de código de MATLAB® no es compatible con objetos ConfusionMatrixChart.

Más acerca de

contraer todo

Visualización independiente

Una visualización independiente es una gráfica diseñada con un propósito concreto que funciona de manera independiente con respecto a otras gráficas. Al contrario que gráficas como plot y surf, una visualización independiente contiene un objeto de ejes preconfigurado y algunas personalizaciones no están disponibles. Una visualización independiente tiene estas características:

  • No se puede combinar con otros elementos de gráficas, como líneas, parches o superficies. Por lo tanto, el comando hold no es compatible.

  • La función gca puede devolver el objeto de gráfica como los ejes actuales.

  • Puede pasar el objeto de gráfica a varias funciones de MATLAB que acepten un objeto de ejes como argumento de entrada. Por ejemplo, puede pasar el objeto de gráfica a la función title.

Sugerencias

  • Si tiene datos one-hot (uno de N), use onehotdecode para preparar sus datos y poder usarlos con confusionchart. Por ejemplo, imagine que tiene etiquetas verdaderas targets y etiquetas predichas outputs, con observaciones en columnas. Puede crear una gráfica de matriz de confusión usando lo siguiente:

    numClasses = size(targets,1);
    trueLabels = onehotdecode(targets,1:numClasses,1);
    predictedLabels = onehotdecode(outputs,1:numClasses,1);
    confusionchart(trueLabels,predictedLabels)

  • Si tiene Statistics and Machine Learning Toolbox™, puede crear una gráfica de matriz de confusión para arreglos altos. Para obtener más detalles, consulte confusionchart (Statistics and Machine Learning Toolbox) y Confusion Matrix for Classification Using Tall Arrays (Statistics and Machine Learning Toolbox).

Historial de versiones

Introducido en R2018b