Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

confusionchart

Crear gráfico de matriz de confusión para el problema de clasificación

Descripción

ejemplo

cm = confusionchart(trueLabels,predictedLabels) crea un gráfico de matriz de confusión a partir de etiquetas verdaderas y etiquetas pronosticadas y devuelve un objeto.trueLabelspredictedLabelsConfusionMatrixChart Las filas de la matriz de confusión corresponden a la clase true y las columnas corresponden a la clase pronosticada. Las celdas diagonales y fuera de la diagonal corresponden a observaciones clasificadas correctamente y incorrectamente, respectivamente. Se usa para modificar el gráfico de matriz de confusión después de su creación.cm Para obtener una lista de propiedades, consulte.Propiedades ConfusionMatrixChart

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

cm = confusionchart(m,classLabels) especifica las etiquetas de clase que aparecen en el eje y en el eje.xy Utilice esta sintaxis si ya tiene una matriz de confusión numérica y etiquetas de clase en el área de trabajo.

cm = confusionchart(parent,___) crea el gráfico de confusión en la figura, el panel o la ficha especificados por.parent

ejemplo

cm = confusionchart(___,Name,Value) especifica propiedades adicionales mediante uno o varios argumentos de par nombre-valor.ConfusionMatrixChart Especifique las propiedades después de todos los demás argumentos de entrada. Para obtener una lista de propiedades, consulte.Propiedades ConfusionMatrixChart

Ejemplos

contraer todo

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas; Y = species;

es una matriz numérica que contiene cuatro mediciones de pétalo para 150 iris. es una matriz celular de vectores de caracteres que contiene las especies de iris correspondientes.XY

Entrena un clasificador de vecino más cercano (KNN), donde el número de vecinos más cercanos en los predictores () es 5.kk Una buena práctica es estandarizar los Datos predictores numéricos.

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

Predecir las etiquetas de los datos de entrenamiento.

predictedY = resubPredict(Mdl);

Cree un gráfico de matriz de confusión a partir de las etiquetas verdaderas y las etiquetas pronosticadas.YpredictedY

cm = confusionchart(Y,predictedY);

La matriz de confusión muestra el número total de observaciones en cada celda. Las filas de la matriz de confusión corresponden a la clase true y las columnas corresponden a la clase pronosticada. Las celdas diagonales y fuera de la diagonal corresponden a observaciones clasificadas correctamente y incorrectamente, respectivamente.

De forma predeterminada, ordena las clases en su orden natural según lo definido por.confusionchartsort En este ejemplo, las etiquetas de clase son vectores de caracteres, por lo que ordena las clases alfabéticamente.confusionchart Se usa para ordenar las clases por un orden especificado o por los valores de la matriz de confusión.sortClasses

La propiedad contiene los valores de la matriz de confusión.NormalizedValues Visualice estos valores utilizando la notación de puntos.

cm.NormalizedValues
ans = 3×3

    50     0     0
     0    47     3
     0     4    46

Modifique la apariencia y el comportamiento del gráfico de matriz de confusión cambiando los valores de propiedad. Añadir un título.

cm.Title = 'Iris Flower Classification Using KNN';

Agregue resúmenes de columna y fila.

cm.RowSummary = 'row-normalized'; cm.ColumnSummary = 'column-normalized';

Un resumen de fila normalizado de filas muestra los porcentajes de las observaciones clasificadas correctamente y incorrectamente para cada clase verdadera. Un resumen de columna normalizado de columna muestra los porcentajes de las observaciones clasificadas correctamente y incorrectamente para cada clase pronosticada.

Cree un gráfico de matriz de confusión y ordene las clases del gráfico de acuerdo con la tasa positiva real de clase (recall) o el valor predictivo positivo de clase (precisión).

Cargue e inspeccione el conjunto de datos.arrhythmia

load arrhythmia isLabels = unique(Y); nLabels = numel(isLabels)
nLabels = 13 
tabulate(categorical(Y))
  Value    Count   Percent       1      245     54.20%       2       44      9.73%       3       15      3.32%       4       15      3.32%       5       13      2.88%       6       25      5.53%       7        3      0.66%       8        2      0.44%       9        9      1.99%      10       50     11.06%      14        4      0.88%      15        5      1.11%      16       22      4.87% 

Los datos contienen 16 etiquetas distintas que describen varios grados de arritmia, pero la respuesta () incluye solo 13 etiquetas distintas.Y

Entrenar un árbol de clasificación y predecir la respuesta de reenvío del árbol.

Mdl = fitctree(X,Y); predictedY = resubPredict(Mdl);

Cree un gráfico de matriz de confusión a partir de las etiquetas verdaderas y las etiquetas pronosticadas.YpredictedY Especifique como mostrar las tasas positivas verdaderas y las tasas de falsos positivos en el Resumen de filas.'RowSummary''row-normalized' Además, especifique cómo mostrar los valores predictivos positivos y las tasas de detección falsas en el Resumen de columna.'ColumnSummary''column-normalized'

fig = figure; cm = confusionchart(Y,predictedY,'RowSummary','row-normalized','ColumnSummary','column-normalized');

Cambie el tamaño del contenedor del gráfico de confusión para que los porcentajes aparezcan en el Resumen de filas.

fig_Position = fig.Position; fig_Position(3) = fig_Position(3)*1.5; fig.Position = fig_Position;

Para ordenar la matriz de confusión de acuerdo con la tasa positiva verdadera, normalizar los valores de celda a través de cada fila estableciendo la propiedad y, a continuación, usar.Normalization'row-normalized'sortClasses Después de ordenar, restablezca la propiedad de nuevo para mostrar el número total de observaciones en cada celda.Normalization'absolute'

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

Para ordenar la matriz de confusión de acuerdo con el valor predictivo positivo, normalizar los valores de celda en cada columna estableciendo la propiedad y, a continuación, usar.Normalization'column-normalized'sortClasses Después de ordenar, restablezca la propiedad de nuevo para mostrar el número total de observaciones en cada celda.Normalization'absolute'

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

Realice la clasificación en una matriz alta del conjunto de datos de iris de Fisher. Calcule un gráfico de matriz de confusión para las etiquetas altas conocidas y predichas mediante la función.confusionchart

Al ejecutar cálculos en matrices altas, el entorno de ejecución predeterminado utiliza la sesión de MATLAB local o un grupo paralelo local (si tiene Parallel Computing Toolbox™). Puede utilizar la función para cambiar el entorno de ejecución.mapreducer

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Convierta las matrices en memoria y las matrices altas.measspecies

tx = tall(meas);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). 
ty = tall(species);

Encuentre el número de observaciones en el array alto.

numObs = gather(length(ty));   % gather collects tall array into memory
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec 

Establecer las semillas de los generadores de números aleatorios utilizando y para la reproducibilidad, y seleccionar aleatoriamente muestras de formación.rngtallrng Los resultados pueden variar en función del número de trabajadores y del entorno de ejecución de los arrays altos. Para obtener más información, consulte.Controle dónde se ejecuta el código (MATLAB)

rng('default')  tallrng('default') numTrain = floor(numObs/2); [txTrain,trIdx] = datasample(tx,numTrain,'Replace',false); tyTrain = ty(trIdx); 

Ajuste un modelo de clasificador de árbol de decisión en las muestras de formación.

mdl = fitctree(txTrain,tyTrain); 
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 1.2 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.66 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.48 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.52 sec 

Predecir etiquetas para las muestras de prueba mediante el modelo entrenado.

txTest = tx(~trIdx,:); label = predict(mdl,txTest);

Cree el gráfico de matriz de confusión para la clasificación resultante.

tyTest = ty(~trIdx); cm = confusionchart(tyTest,label)
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.2 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 1.4 sec 

cm =    ConfusionMatrixChart with properties:      NormalizedValues: [3×3 double]          ClassLabels: {3×1 cell}    Show all properties  

El gráfico de matriz de confusión muestra que tres mediciones en la clase versicolor se clasifican erróneamente como virginica, y una medida en la clase virginica se clasifica erróneamente como versicolor. Todas las mediciones pertenecientes a setosa se clasifican correctamente.

Argumentos de entrada

contraer todo

Verdaderas etiquetas de problema de clasificación, especificadas como un vector categórico, un vector numérico, un vector de cadena, un array de caracteres, una matriz de vectores de caracteres o un vector lógico. Si es un vector, cada elemento corresponde a una observación.trueLabels Si es una matriz de caracteres, debe ser bidimensional con cada fila correspondiente a la etiqueta de una observación.trueLabels

Etiquetas pronosticadas de problema de clasificación, especificadas como un vector categórico, Vector numérico, Vector de cadena, matriz de caracteres, matriz de celdas de vectores de caracteres o Vector lógico. Si es un vector, cada elemento corresponde a una observación.predictedLabels Si es una matriz de caracteres, debe ser bidimensional con cada fila correspondiente a la etiqueta de una observación.predictedLabels

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

Etiquetas de clase del gráfico de matriz de confusión, especificadas como un vector categórico, Vector numérico, Vector de cadena, matriz de caracteres, matriz de celdas de vectores de caracteres o Vector lógico. Si es un vector, debe tener el mismo número de elementos que la matriz de confusión tiene filas y columnas.classLabels Si es una matriz de caracteres, debe ser bidimensional con cada fila correspondiente a la etiqueta de una clase.classLabels

Contenedor principal en el que trazar, especificado como a, u objeto.FigurePanelTab

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

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

Nota

Las propiedades enumeradas aquí son solo un subconjunto. Para obtener una lista completa, consulte.Propiedades ConfusionMatrixChart

Título del gráfico 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 del gráfico de matriz de confusión, especificado como uno de los siguientes:

OpciónDescripción
'off'No mostrar un resumen de columna.
'absolute'Muestra el número total de observaciones clasificadas correctamente y incorrectamente para cada clase pronosticada.
'column-normalized'Mostrar el número de observaciones clasificadas correctamente y incorrectamente para cada clase pronosticada como porcentajes del número de observaciones de la clase pronosticada correspondiente. Los porcentajes de las observaciones clasificadas correctamente se pueden pensar como precisiones de clase (o valores predictivos positivos).
'total-normalized'Mostrar el número de observaciones clasificadas correctamente y incorrectamente para cada clase pronosticada como porcentajes del número total de observaciones.

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

Ejemplo: cm.ColumnSummary = 'column-normalized'

Resumen de fila del gráfico de matriz de confusión, especificado como uno de los siguientes:

OpciónDescripción
'off'No mostrar un resumen de fila.
'absolute'Muestra el número total de observaciones clasificadas correctamente y incorrectamente para cada clase verdadera.
'row-normalized'Mostrar el número de observaciones clasificadas correctamente y incorrectamente para cada clase verdadera como porcentajes del número de observaciones de la clase verdadera correspondiente. Los porcentajes de las observaciones clasificadas correctamente se pueden pensar como retiradas de clase (o tasas positivas verdaderas).
'total-normalized'Mostrar el número de observaciones clasificadas correctamente y incorrectamente para 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, especificado como uno de los siguientes:

OpciónDescripción
'absolute'Muestra el número total de observaciones en cada celda.
'column-normalized'Normalice cada valor de celda por el número de observaciones que tiene la misma clase pronosticada.
'row-normalized'Normalice cada valor de celda por el número de observaciones que tiene la misma clase verdadera.
'total-normalized'Normalice cada valor de celda por el número total de observaciones.

La modificación de 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'

Capacidades ampliadas

Introducido en R2018b