Main Content

confusionmat

Calcular la matriz de confusión para un problema de clasificación

Descripción

ejemplo

C = confusionmat(group,grouphat) devuelve una matriz de confusión C determinada por los grupos conocidos y predichos en group y grouphat, respectivamente.

C = confusionmat(group,grouphat,'Order',grouporder) usa grouporder con el fin de ordenar las filas y columnas de C.

ejemplo

[C,order] = confusionmat(___) también devuelve el orden de las filas y columnas de C en la variable order empleando cualquiera de los argumentos de entrada de las sintaxis anteriores.

Ejemplos

contraer todo

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.

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

Calcule la matriz de confusión numérica. order es el orden de las clases en la matriz de confusión.

[m,order] = confusionmat(trueLabels,predictedLabels)
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

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

Puede usar confusionchart para representar la matriz de confusión como una gráfica de matriz de confusión.

figure
cm = confusionchart(m,order);

Figure contains an object of type ConfusionMatrixChart.

No es necesario calcular primero la matriz de confusión y luego representarla. En su lugar, represente una gráfica de matriz de confusión directamente a partir de las etiquetas verdaderas y predichas. También puede añadir resúmenes de columnas y filas y un título.

figure
cm = confusionchart(trueLabels,predictedLabels, ...
    'Title','My Title', ...
    'RowSummary','row-normalized', ...
    'ColumnSummary','column-normalized');

Figure contains an object of type ConfusionMatrixChart. The chart of type ConfusionMatrixChart has title My Title.

El objeto ConfusionMatrixChart almacena la matriz de confusión numérica en la propiedad NormalizedValues, y las clases en la propiedad ClassLabels.

cm.NormalizedValues
ans = 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

cm.ClassLabels
ans = 10x1 categorical
     airplane 
     automobile 
     bird 
     cat 
     deer 
     dog 
     frog 
     horse 
     ship 
     truck 

Argumentos de entrada

contraer todo

Grupos conocidos para clasificar observaciones, especificados como un vector numérico, un vector lógico, un arreglo de caracteres, un arreglo de cadenas, un arreglo de celdas de vectores de caracteres o un vector categórico.

group es una variable de grupos del mismo tipo que grouphat. El argumento group debe tener el mismo número de observaciones que grouphat, tal como se describe en Grouping Variables (Statistics and Machine Learning Toolbox). La función confusionmat trata los arreglos de caracteres y los arreglos de cadenas como arreglos de celdas de vectores de caracteres. Además, confusionmat trata los valores NaN, vacíos y 'undefined' en group como valores que faltan, y no los cuenta como grupos o categorías distintos.

Ejemplo: {'Male','Female','Female','Male','Female'}

Tipos de datos: single | double | logical | char | string | cell | categorical

Grupos predichos para clasificar observaciones, especificados como un vector numérico, un vector lógico, un arreglo de caracteres, un arreglo de cadenas, un arreglo de celdas de vectores de caracteres o un vector categórico.

grouphat es una variable de grupos del mismo tipo que group. El argumento grouphat debe tener el mismo número de observaciones que group, tal como se describe en Grouping Variables (Statistics and Machine Learning Toolbox). La función confusionmat trata los arreglos de caracteres y los arreglos de cadenas como arreglos de celdas de vectores de caracteres. Además, confusionmat trata los valores NaN, vacíos y 'undefined' en grouphat como valores que faltan, y no los cuenta como grupos o categorías distintos.

Ejemplo: [1 0 0 1 0]

Tipos de datos: single | double | logical | char | string | cell | categorical

Orden de los grupos, especificado como un vector numérico, un vector lógico, un arreglo de caracteres, un arreglo de cadenas, un arreglo de celdas de vectores de caracteres o un vector categórico.

grouporder es una variable de agrupación que contiene todos los distintos elementos de group y grouphat. Especifique grouporder para definir el orden de las filas y columnas de C. Si grouporder contiene elementos que no se encuentran en group ni en grouphat, las entradas correspondientes en C son 0.

De forma predeterminada, el orden de los grupos depende del tipo de datos de s = [group;grouphat]:

  • Para los vectores numéricos y lógicos, el orden es el ordenado de s.

  • Para vectores categóricos, el orden es el que devuelve categories(s).

  • Para otros tipos de datos, el orden es el de la primera aparición en s.

Ejemplo: 'order',{'setosa','versicolor','virginica'}

Tipos de datos: single | double | logical | char | string | cell | categorical

Argumentos de salida

contraer todo

Matriz de confusión, devuelta como una matriz cuadrada de igual tamaño que el número total de elementos distintos de los argumentos group y grouphat. C(i,j) es el número de observaciones conocidas contenidas en el grupo i pero que se predecía que se encontraban en el grupo j.

Las filas y las columnas de C cuentan con un orden idéntico de los índices del mismo grupo. De forma predeterminada, el orden de los grupos depende del tipo de datos de s = [group;grouphat]:

  • Para los vectores numéricos y lógicos, el orden es el ordenado de s.

  • Para vectores categóricos, el orden es el que devuelve categories(s).

  • Para otros tipos de datos, el orden es el de la primera aparición en s.

Para cambiar el orden, especifique grouporder.

La función confusionmat trata los valores NaN, vacíos y 'undefined' de las variables de agrupación como valores que faltan, y no los incluye en las filas ni en las columnas de C.

Orden de filas y columnas en C, devuelto como un vector numérico, un vector lógico, un vector categórico o un arreglo de celdas de vectores de caracteres. Si group y grouphat son arreglos de caracteres, arreglos de cadenas o arreglos de celdas de vectores de caracteres, entonces, la variable order es un arreglo de celdas de vectores de caracteres. De lo contrario, order es del mismo tipo que group y grouphat.

Funcionalidad alternativa

  • Use confusionchart para calcular y representar una matriz de confusión. Además, confusionchart muestra estadísticas resumidas sobre sus datos y ordena las clases de la matriz de confusión de acuerdo con la precisión por clase (valor predictivo positivo), la recuperación por clase (tasa de positivos verdaderos) o el número total de observaciones clasificadas correctamente.