support sklearn machine idf for confusion accuracy 3x3 python matplotlib matrix scikit-learn text-classification

sklearn - text classification python



¿Cómo puedo trazar una matriz de confusión? (3)

La respuesta de @bninopaul no es completamente para principiantes.

Aquí está el código que puede "copiar y ejecutar"

import seaborn as sn import pandas as pd import matplotlib.pyplot as plt array = [[13,1,1,0,2,0], [3,9,6,0,1,0], [0,0,16,2,0,0], [0,0,0,13,0,0], [0,0,0,0,15,0], [0,0,1,0,0,15]] df_cm = pd.DataFrame(array, range(6), range(6)) #plt.figure(figsize = (10,7)) sn.set(font_scale=1.4)#for label size sn.heatmap(df_cm, annot=True,annot_kws={"size": 16})# font size

Estoy utilizando scikit-learn para la clasificación de documentos de texto (22000) en 100 clases. Utilizo el método de matriz de confusión de scikit-learn para calcular la matriz de confusión.

model1 = LogisticRegression() model1 = model1.fit(matrix, labels) pred = model1.predict(test_matrix) cm=metrics.confusion_matrix(test_labels,pred) print(cm) plt.imshow(cm, cmap=''binary'')

Así es como se ve mi matriz de confusión:

[[3962 325 0 ..., 0 0 0] [ 250 2765 0 ..., 0 0 0] [ 2 8 17 ..., 0 0 0] ..., [ 1 6 0 ..., 5 0 0] [ 1 1 0 ..., 0 0 0] [ 9 0 0 ..., 0 0 9]]

Sin embargo, no recibo una trama clara o legible. ¿Hay una mejor manera de hacer esto?


SI desea más datos en su matriz de confusión, incluyendo " columna de totales " y " línea de totales ", y porcentajes (%) en cada celda, como el valor predeterminado de matlab (vea la imagen a continuación)

Incluyendo el Heatmap y otras opciones ...

Deberías divertirte con el módulo anterior, compartido en el github; )

https://github.com/wcipriano/pretty-print-confusion-matrix

Este módulo puede realizar su tarea fácilmente y produce la salida anterior con una gran cantidad de parámetros para personalizar su CM:


puedes usar plt.matshow() lugar de plt.imshow() o puedes usar el mapa de heatmap del módulo de heatmap ( ver documentación ) para trazar la matriz de confusión

import seaborn as sn import pandas as pd import matplotlib.pyplot as plt array = [[33,2,0,0,0,0,0,0,0,1,3], [3,31,0,0,0,0,0,0,0,0,0], [0,4,41,0,0,0,0,0,0,0,1], [0,1,0,30,0,6,0,0,0,0,1], [0,0,0,0,38,10,0,0,0,0,0], [0,0,0,3,1,39,0,0,0,0,4], [0,2,2,0,4,1,31,0,0,0,2], [0,1,0,0,0,0,0,36,0,2,0], [0,0,0,0,0,0,1,5,37,5,1], [3,0,0,0,0,0,0,0,0,39,0], [0,0,0,0,0,0,0,0,0,0,38]] df_cm = pd.DataFrame(array, index = [i for i in "ABCDEFGHIJK"], columns = [i for i in "ABCDEFGHIJK"]) plt.figure(figsize = (10,7)) sn.heatmap(df_cm, annot=True)