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.

confusionmat

Calcule la matriz de confusión para el problema de clasificación

Descripción

ejemplo

C = confusionmat(group,grouphat) Devuelve la matriz de confusión determinada por los grupos conocidos y previstos en y, respectivamente.Cgroupgrouphat

ejemplo

C = confusionmat(group,grouphat,'Order',grouporder) utiliza para ordenar las filas y columnas de.grouporderC

ejemplo

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

Ejemplos

contraer todo

Mostrar la matriz de confusión para los datos con dos clasificaciones erróneas y una clasificación faltante.

Cree vectores para los grupos conocidos y los grupos previstos.

g1 = [3 2 2 3 1 1]'; % Known groups g2 = [4 2 3 NaN 1 1]'; % Predicted groups

Devuelva la matriz de confusión.

C = confusionmat(g1,g2)
C = 4×4

     2     0     0     0
     0     1     1     0
     0     0     0     1
     0     0     0     0

Los índices de las filas y columnas de la matriz de confusión son idénticos y se organizan de forma predeterminada en el orden ordenado de, es decir,.C[g1;g2](1,2,3,4)

La matriz de confusión muestra que los dos puntos de datos conocidos por estar en el grupo 1 se clasifican correctamente. Para el grupo 2, uno de los puntos de datos se clasifica erróneamente en el grupo 3. Además, uno de los puntos de datos conocidos por estar en el grupo 3 se clasifica erróneamente en el grupo 4. trata el valor de la variable de agrupación como un valor que falta y no lo incluye en las filas y columnas de.confusionmatNaNg2C

Trace la matriz de confusión como un gráfico de matriz de confusión utilizando.confusionchart

confusionchart(C);

No es necesario calcular primero la matriz de confusión y luego trazarla. En su lugar, trace un gráfico de matriz de confusión directamente desde las etiquetas true y pronosticadas mediante.confusionchart

cm = confusionchart(g1,g2)

cm =    ConfusionMatrixChart with properties:      NormalizedValues: [4x4 double]          ClassLabels: [4x1 double]    Show all properties  

El objeto almacena la matriz de confusión numérica en la propiedad y las clases de la propiedad.ConfusionMatrixChartNormalizedValuesClassLabels Visualice estas propiedades utilizando la notación de puntos.

cm.NormalizedValues
ans = 4×4

     2     0     0     0
     0     1     1     0
     0     0     0     1
     0     0     0     0

cm.ClassLabels
ans = 4×1

     1
     2
     3
     4

Muestre la matriz de confusión para los datos con dos clasificaciones erróneas y una clasificación faltante y especifique el orden de grupo.

Cree vectores para los grupos conocidos y los grupos previstos.

g1 = [3 2 2 3 1 1]'; % Known groups g2 = [4 2 3 NaN 1 1]'; % Predicted groups

Especifique el orden de grupo y devuelva la matriz de confusión.

C = confusionmat(g1,g2,'Order',[4 3 2 1])
C = 4×4

     0     0     0     0
     1     0     0     0
     0     1     1     0
     0     0     0     2

Los índices de las filas y columnas de la matriz de confusión son idénticos y se organizan en el orden especificado por el orden de grupo, es decir,.C(4,3,2,1)

La segunda fila de la matriz de confusión muestra que uno de los puntos de datos conocidos por estar en el grupo 3 se clasifica erróneamente en el grupo 4.C La tercera fila de muestra que uno de los puntos de datos pertenecientes al grupo 2 se clasifica erróneamente en el grupo 3, y la cuarta fila muestra que los dos puntos de datos conocidos en el grupo 1 se clasifican correctamente. trata el valor de la variable de agrupación como un valor que falta y no lo incluye en las filas y columnas de.CconfusionmatNaNg2C

Realice la clasificación en una muestra del conjunto de datos y visualice la matriz de confusión para la clasificación resultante.fisheriris

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Aleatorice las mediciones y los grupos en los datos.

rng(0,'twister'); % For reproducibility numObs = length(species); p = randperm(numObs); meas = meas(p,:); species = species(p);

Entrenar un clasificador de análisis discriminante mediante mediciones en la primera mitad de los datos.

half = floor(numObs/2); training = meas(1:half,:); trainingSpecies = species(1:half); Mdl = fitcdiscr(training,trainingSpecies);

Predecir etiquetas para las mediciones en la segunda mitad de los datos mediante el clasificador entrenado.

sample = meas(half+1:end,:); grouphat = predict(Mdl,sample);

Especifique el orden de grupo y visualice la matriz de confusión para la clasificación resultante.

group = species(half+1:end); [C,order] = confusionmat(group,grouphat,'Order',{'setosa','versicolor','virginica'})
C = 3×3

    29     0     0
     0    22     2
     0     0    22

order = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

La matriz de confusión muestra que las mediciones pertenecientes a setosa y virginica se clasifican correctamente, mientras que dos de las mediciones pertenecientes a versicolor se clasifican erróneamente como virginica. La salida contiene el orden de las filas y columnas de la matriz de confusión en la secuencia especificada por el orden de grupo.order {'setosa','versicolor','virginica'}

Realice la clasificación en una matriz alta del conjunto de datos, calcule una matriz de confusión para las etiquetas altas conocidas y predichas mediante la función y trace la matriz de confusión mediante la función.fisheririsconfusionmatconfusionchart

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.065 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 0.19 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.51 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec 

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

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

Calcule la matriz de confusión para la clasificación resultante.

tyTest = ty(~trIdx); [C,order] = confusionmat(tyTest,label)
C =    3×3 tall double matrix      23     0     0      0    23     3      0     1    25   order =    3×1 tall cell array      {'setosa'    }     {'versicolor'}     {'virginica' } 

La 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.

Para calcular y trazar la matriz de confusión, utilice confusionchart en lugar de.

cm = confusionchart(tyTest,label)
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.1 sec 

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

Argumentos de entrada

contraer todo

Grupos conocidos para categorizar observaciones, especificadas como un vector numérico, Vector lógico, matriz de caracteres, matriz de cadenas, matriz de celdas de vectores de caracteres o Vector categórico.

es una variable de agrupación del mismo tipo que.groupgrouphat El argumento debe tener el mismo número de observaciones que, como se describe en.groupgrouphatAgrupar variables La función trata matrices de caracteres y matrices de cadenas como matrices de celdas de vectores de caracteres.confusionmat Además, trata, vacía y valora como valores faltantes y no los cuenta como grupos o categorías distintos.confusionmatNaN'undefined'group

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

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

Grupos previstos para categorizar observaciones, especificadas como un vector numérico, Vector lógico, matriz de caracteres, matriz de cadenas, matriz de celdas de vectores de caracteres o Vector categórico.

es una variable de agrupación del mismo tipo que.grouphatgroup El argumento debe tener el mismo número de observaciones que, como se describe en.grouphatgroupAgrupar variables La función trata matrices de caracteres y matrices de cadenas como matrices de celdas de vectores de caracteres.confusionmat Además, trata, vacía y valora como valores faltantes y no los cuenta como grupos o categorías distintos.confusionmatNaN'undefined'grouphat

Ejemplo: [1 0 0 1 0]

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

Orden de grupo, especificado como un vector numérico, Vector lógico, matriz de caracteres, matriz de cadena, matriz de celdas de vectores de caracteres o Vector categórico.

es una variable de agrupación que contiene todos los elementos distintos en y.groupordergroupgrouphat Especifique para definir el orden de las filas y columnas de.grouporderC Si contiene elementos que no están en o, las entradas correspondientes en son.groupordergroupgrouphatC0

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

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

  • Para los vectores categóricos, el pedido es el pedido devuelto por categories(s).

  • Para otros tipos de datos, el orden es el orden 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 con el tamaño igual al número total de elementos distintos en los argumentos y. es el recuento de observaciones que se sabe que están en grupo, pero se predice que estarán en grupo.groupgrouphatC(i,j)ij

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

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

  • Para los vectores categóricos, el pedido es el pedido devuelto por categories(s).

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

Para cambiar el orden, especifiquegrouporder

La función trata, vacía y valora los valores de las variables de agrupamiento como valores faltantes y no los incluye en las filas y columnas de.confusionmatNaN'undefined'C

Orden de filas y columnas en, devuelta como vector numérico, Vector lógico, Vector categórico o matriz de vectores de caracteres.C Si y son matrices de caracteres, matrices de cadenas o matrices de celdas de vectores de caracteres, la variable es una matriz de vectores de caracteres de celda.groupgrouphatorder De lo contrario, es del mismo tipo que y.ordergroupgrouphat

Funcionalidad alternativa

  • Se utiliza para calcular y trazar una matriz de confusión.confusionchart Además, muestra estadísticas de resumen sobre sus datos y ordena las clases de la matriz de confusión de acuerdo con la precisión de clase (valor predictivo positivo), la recuperación en clase (tasa positiva verdadera), o el número total de correctamente clasificado Observaciones.confusionchart

Capacidades ampliadas

Introducido en R2008b