¿Cómo se mide el puntaje de precisión para cada clase cuando se prueba el clasificador en sklearn?

Hay 2 formas de hacerlo: usando el método de score clasificadores o haciéndolo “manualmente” usando el accuracy_score del módulo de metrics . P.ej,

  de sklearn.metrics import precision_score
 importar numpy como np
 y_true = np.array ([0, 0, 0, 1, 1, 1, 2, 2, 2, 2])
 y_pred = np.array ([0, 0, 0, 1, 1, 1, 2, 2, 2, 0])
 precision_score (y_true, y_pred)

esto devolvería la precisión no ponderada, es decir

  0,90 

Para ponderar la precisión por el número de muestras por clase, podríamos usar el parámetro sample_weight . Por ejemplo,

  w = np.ones (y_true.shape [0])
 para idx, i en enumerate (np.bincount (y_true)):
     w [y_true == idx] * = (i / float (y_true.shape [0]))
 precision_score (y_true, y_pred, sample_weight = w)

que luego regresa

  0.88235294117647056 

Puede usar la métrica de clasificación confusion_matrix en scikit-learn.

  de sklearn.metrics import confusion_matrix
 y_ verdadero = [2, 0, 2, 2, 0, 1]
 y_pred = [0, 0, 2, 2, 0, 2]
 cmat = confusion_matrix (y_true, y_pred)
 cmat

>> array([[2, 0, 0], [0, 0, 1], [1, 0, 2]])

Como se puede ver, las entradas diagonales dan el número correcto de clasificaciones para cada etiqueta. Los totales se pueden encontrar sumando las filas. La fracción de etiquetas correctamente clasificadas para cada caso viene dada por:

  cmat.diagonal () / cmat.sum (axis = 1)

>> array([ 1. , 0. , 0.66666667])

Depende de si se trata de una clasificación de varias clases o una clasificación binaria y de si la distribución de la clase no está equilibrada.

Por supuesto, para un problema de clase desequilibrado, la precisión generalmente no es una elección acertada, es posible que preste más atención a la precisión o la curva de recuperación de precisión de la clase menor. En esta situación, la precisión y el recuerdo o el puntaje F de la clase menor podrían ser la medida más adecuada.

Para un problema habitual de clasificación binaria equilibrada, el AUC es la primera opción para la medición. Si desea observar más, el ROC es la buena opción.

Para la clasificación de varias clases, usaré una matriz de confusión para trazar la distribución de clasificación errónea, puede ayudarlo a reconocer qué clase para qué clase es el problema más grave. Pero para medir la clasificación, elegiré acc o logloss.

Puede encontrar todas las medidas mencionadas anteriormente en el módulo sklearn.metrics.

Utilice el informe de clasificación http://scikit-learn.org/stable/m … en su lugar:

soporte de precisión de puntuación f1

clase 0 0.67 1.00 0.80 2
clase 1 0.00 0.00 0.00 1
clase 2 1.00 1.00 1.00 2

promedio / total 0.67 0.80 0.72 5

Tiene que haber un creador de matriz confuso. No sé el nombre exacto de la función, pero estoy seguro de que sí.

Prueba sklearn.cross_validation.cross_val_score.

Esto te dará una variedad de puntajes

More Interesting

¿La IA es capaz de una conciencia autónoma sin programación? ¿Puede un sistema arrancar su propia programación para autorregularse y ser sabiamente equivalente a una conciencia formadora de vida?

¿Cuál es la diferencia entre inteligencia artificial y algoritmos?

Cómo crear una red neuronal con PyBrain que tenga un número diferente de valores de salida objetivo para cada entrada

¿Cuáles son algunos de los sistemas de conversación de IA más modernos?

¿Qué piensas sobre la creación de máquinas superinteligentes (IA)? Por favor lea los detalles antes de responder.

¿Cuáles son los mejores cursos de aprendizaje automático y robótica?

¿Cuál resultará ser el fenómeno más estable en el universo, el aumento de la entropía o el aumento de la inteligencia?

¿Qué se entiende por reconocimiento de patrones y aprendizaje automático?

¿Cómo es la investigación de aprendizaje profundo en el MIT en comparación con la Universidad de Toronto, la Universidad de Montreal, NYU o Stanford?

Cómo utilizar mejor mis grados de informática y contabilidad, teniendo en cuenta el advenimiento de la inteligencia artificial, la automatización, etc.

¿Por qué Facebook no compró DeepMind? ¿Cuánto habrían estado dispuestos a pagar? ¿Para qué habría usado Facebook DeepMind?

¿Cuáles son los proyectos de inteligencia artificial de código abierto más prometedores?

¿Los sorteos son más comunes en el ajedrez informático o en el ajedrez humano de alto nivel?

¿Los robots están reemplazando los trabajos?

¿Se puede implementar la inteligencia artificial en virus informáticos? ¿Alguien lo ha hecho ya?