Main Content

plotconfusion

Representar una matriz de confusión de clasificación

Descripción

ejemplo

plotconfusion(targets,outputs) representa una matriz de confusión para las etiquetas verdaderas targets y las etiquetas predichas outputs. Especifique las etiquetas como vectores categóricos o con el formato uno de N (one-hot).

Sugerencia

No se recomienda el uso de plotconfusion para etiquetas categóricas. En su lugar, use confusionchart.

En la gráfica de la matriz de confusión, las filas corresponden a la clase predicha (clase de salida) y las columnas corresponden a la clase verdadera (clase objetivo). Las celdas en diagonal corresponden a las observaciones que están clasificadas correctamente. Las celdas que no están en diagonal corresponden a las observaciones que están clasificadas incorrectamente. Tanto el número de observaciones como el porcentaje del número total de observaciones se muestran en cada celda.

La columna del extremo derecho de la gráfica muestra los porcentajes de todos los ejemplos que se predice que pertenecen a cada clase que se clasifican correcta e incorrectamente. Estas métricas a menudo se denominan tasa de precisión (o valor predictivo positivo) y tasa de detección de falsos, respectivamente. La fila de la parte inferior de la gráfica muestra los porcentajes de todos los ejemplos que pertenecen a cada clase que se clasifican correcta e incorrectamente. Estas métricas a menudo se denominan tasa de recuperación (o tasa de positivo verdadero) y tasa de falsos negativos, respectivamente. La celda en la esquina inferior derecha de la gráfica muestra la precisión general.

plotconfusion(targets,outputs,name) representa una matriz de confusión y añade name al principio del título de la gráfica.

plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen) representa múltiples matrices de confusión en una figura y añade los argumentos name al principio de los títulos de las gráficas correspondientes.

Ejemplos

contraer todo

Cargue los datos que están formados por imágenes sintéticas de dígitos manuscritos. XTrain es un arreglo de imágenes de 28 por 28 por 1 por 5000 y YTrain es un vector categórico que contiene las etiquetas de las imágenes.

load DigitsDataTrain
classNames = categories(labelsTrain);

Defina la arquitectura de una red neuronal convolucional.

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,8,'Padding','same')
    batchNormalizationLayer
    reluLayer    
    convolution2dLayer(3,16,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    convolution2dLayer(3,32,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(10)
    softmaxLayer];

Especifique opciones de entrenamiento y entrene la red.

options = trainingOptions('sgdm', ...
    'MaxEpochs',5, ...
    'Verbose',false, ...
    'Plots','training-progress', ...
    'Metrics','accuracy');
net = trainnet(XTrain,labelsTrain,layers,"crossentropy",options);

Cargue y clasifique los datos de prueba con la red entrenada.

load digitsDataTest
scores = minibatchpredict(net,XTest)
scores = 5000×10 single matrix

    0.9979    0.0005    0.0005    0.0001    0.0001    0.0000    0.0004    0.0000    0.0002    0.0002
    0.9297    0.0000    0.0320    0.0003    0.0000    0.0001    0.0017    0.0005    0.0004    0.0353
    0.9996    0.0000    0.0001    0.0000    0.0000    0.0000    0.0001    0.0000    0.0000    0.0002
    0.9195    0.0000    0.0004    0.0001    0.0002    0.0000    0.0147    0.0000    0.0016    0.0635
    0.9429    0.0006    0.0032    0.0003    0.0000    0.0021    0.0040    0.0021    0.0447    0.0002
    0.9906    0.0003    0.0001    0.0000    0.0000    0.0000    0.0003    0.0000    0.0002    0.0085
    0.9938    0.0000    0.0004    0.0000    0.0000    0.0000    0.0011    0.0000    0.0041    0.0006
    0.9998    0.0000    0.0000    0.0000    0.0000    0.0000    0.0001    0.0000    0.0000    0.0000
    0.6722    0.0001    0.0028    0.0002    0.0013    0.0022    0.0007    0.0001    0.0035    0.3168
    0.8069    0.0020    0.1340    0.0041    0.0009    0.0015    0.0173    0.0010    0.0034    0.0288
      ⋮

YTest = scores2label(scores,classNames);

Represente la matriz de confusión de las etiquetas de prueba verdaderas YTest y las etiquetas predichas YPredicted.

plotconfusion(YTest,YTest)

Las filas corresponden a la clase predicha (clase de salida) y las columnas corresponden a la clase verdadera (clase objetivo). Las celdas en diagonal corresponden a las observaciones que están clasificadas correctamente. Las celdas que no están en diagonal corresponden a las observaciones que están clasificadas incorrectamente. Tanto el número de observaciones como el porcentaje del número total de observaciones se muestran en cada celda.

La columna del extremo derecho de la gráfica muestra los porcentajes de todos los ejemplos que se predice que pertenecen a cada clase que se clasifican correcta e incorrectamente. Estas métricas a menudo se denominan tasa de precisión (o valor predictivo positivo) y tasa de detección de falsos, respectivamente. La fila de la parte inferior de la gráfica muestra los porcentajes de todos los ejemplos que pertenecen a cada clase que se clasifican correcta e incorrectamente. Estas métricas a menudo se denominan tasa de recuperación (o tasa de positivo verdadero) y tasa de falsos negativos, respectivamente. La celda en la esquina inferior derecha de la gráfica muestra la precisión general.

Cierre todas las figuras.

close(findall(groot,'Type','figure'))

Cargue los datos de muestra usando la función cancer_dataset. XTrain es una matriz de 9 por 699 que define nueve atributos de 699 biopsias. YTrain es una matriz de 2 por 699 en la que cada columna indica la categoría correcta de la observación correspondiente. Cada columna de YTrain cuenta con un elemento que es igual a uno en la primera o la segunda fila, que corresponde a que el cáncer es benigno o maligno, respectivamente. Para obtener más información sobre este conjunto de datos, escriba help cancer_dataset en la línea de comandos.

rng default
[XTrain,YTrain] = cancer_dataset;
YTrain(:,1:10)
ans = 2×10

     1     1     1     0     1     1     0     0     0     1
     0     0     0     1     0     0     1     1     1     0

Cree una red de reconocimiento de patrones y entrénela usando los datos de muestra.

net = patternnet(10);
net = train(net,XTrain,YTrain);

Estime el estado del cáncer usando la red entrenada. Cada columna de la matriz YPredicted incluye las probabilidades predichas de que cada observación pertenezca a la clase 1 y la clase 2, respectivamente.

YPredicted = net(XTrain);
YPredicted(:,1:10)
ans = 2×10

    0.9980    0.9979    0.9894    0.0578    0.9614    0.9960    0.0026    0.0023    0.0084    0.9944
    0.0020    0.0021    0.0106    0.9422    0.0386    0.0040    0.9974    0.9977    0.9916    0.0056

Represente la matriz de confusión. Para crear la gráfica, plotconfusion etiqueta cada observación según la probabilidad de clase más alta.

plotconfusion(YTrain,YPredicted)

En esta figura, las dos primeras celdas en diagonal muestran el número y el porcentaje de clasificaciones correctas de la red entrenada. Por ejemplo, 446 biopsias están clasificadas correctamente como benignas. Esto corresponde al 63,8% de las 699 biopsias. De forma similar, 236 casos están clasificados correctamente como malignos. Esto corresponde al 33,8 % de todas las biopsias.

Cinco de las biopsias malignas están clasificadas incorrectamente como benignas y esto corresponde al 0,7 % de las 699 biopsias de los datos. De forma similar, doce de las biopsias benignas están clasificadas incorrectamente como malignas y esto corresponde al 1,7% de todos los datos.

De las 451 predicciones benignas, el 98,9% son correctas y el 1,1% son incorrectas. De las 248 predicciones malignas, el 95,2% son correctas y el 4,8% son incorrectas. De los 458 casos benignos, el 97,4% están predichos correctamente como benignos y el 2,6% están predichos como malignos. De los 241 casos malignos, el 97,9% están clasificados correctamente como malignos y el 2,1% están clasificados como benignos.

En resumen, el 97,6 % de las predicciones son correctas y el 2,4 % son incorrectas.

Argumentos de entrada

contraer todo

Etiquetas de clase verdadera, especificadas como una de las siguientes opciones:

  • Un vector categórico, donde cada elemento es la etiqueta de clase de una observación. Los argumentos outputs y targets deben tener el mismo número de elementos. Si los vectores categóricos definen clases subyacentes, entonces plotconfusion muestra todas las clases subyacentes, incluso si no hay observaciones de algunas de las clases subyacentes. Si los argumentos son vectores categóricos ordinales, entonces ambos deben definir las mismas categorías subyacentes en el mismo orden.

  • Una matriz de N por M, donde N es el número de clases y M es el número de observaciones. Cada columna de la matriz debe estar en forma de uno de N (one-hot), donde un solo elemento igual a 1 indica la etiqueta verdadera y todos los demás elementos son iguales a 0.

Etiquetas de clase predichas, especificadas como una de las siguientes opciones:

  • Un vector categórico, donde cada elemento es la etiqueta de clase de una observación. Los argumentos outputs y targets deben tener el mismo número de elementos. Si los vectores categóricos definen clases subyacentes, entonces plotconfusion muestra todas las clases subyacentes, incluso si no hay observaciones de algunas de las clases subyacentes. Si los argumentos son vectores categóricos ordinales, entonces ambos deben definir las mismas categorías subyacentes en el mismo orden.

  • Una matriz de N por M, donde N es el número de clases y M es el número de observaciones. Cada columna de la matriz puede estar en forma de uno de N (one-hot), donde un solo elemento igual a 1 indica la etiqueta predicha, o en forma de probabilidades que suman uno.

Nombre de la matriz de confusión, especificada como un arreglo de caracteres. plotconfusion añade el name especificado al principio del título de la gráfica.

Tipos de datos: char

Historial de versiones

Introducido en R2008a

Consulte también

| |