machine-learning - multiclase - matriz de confusion precision
¿Cómo interpretar la matriz de confusión de aprendizaje de scikit y el informe de clasificación? (3)
Tengo una tarea de análisis de sentimiento, para esto estoy usando este corpus las opiniones tienen 5 clases ( very neg
, neg
, neu
, pos
, very pos
), de 1 a 5. Por lo tanto, hago la clasificación de la siguiente manera:
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
tfidf_vect= TfidfVectorizer(use_idf=True, smooth_idf=True,
sublinear_tf=False, ngram_range=(2,2))
from sklearn.cross_validation import train_test_split, cross_val_score
import pandas as pd
df = pd.read_csv(''/corpus.csv'',
header=0, sep='','', names=[''id'', ''content'', ''label''])
X = tfidf_vect.fit_transform(df[''content''].values)
y = df[''label''].values
from sklearn import cross_validation
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X,
y, test_size=0.33)
from sklearn.svm import SVC
svm_1 = SVC(kernel=''linear'')
svm_1.fit(X, y)
svm_1_prediction = svm_1.predict(X_test)
Luego, con las métricas obtuve la siguiente matriz de confusión y el informe de clasificación, de la siguiente manera:
print ''/nClasification report:/n'', classification_report(y_test, svm_1_prediction)
print ''/nConfussion matrix:/n'',confusion_matrix(y_test, svm_1_prediction)
Entonces, este es el resultado:
Clasification report:
precision recall f1-score support
1 1.00 0.76 0.86 71
2 1.00 0.84 0.91 43
3 1.00 0.74 0.85 89
4 0.98 0.95 0.96 288
5 0.87 1.00 0.93 367
avg / total 0.94 0.93 0.93 858
Confussion matrix:
[[ 54 0 0 0 17]
[ 0 36 0 1 6]
[ 0 0 66 5 18]
[ 0 0 0 273 15]
[ 0 0 0 0 367]]
¿Cómo puedo interpretar la matriz de confusión y el informe de clasificación anteriores? Intenté leer la documentación y esta pregunta . ¿Pero aún se puede interpretar qué pasó aquí particularmente con estos datos ?. ¿Esta matriz es de alguna manera "diagonal" ?. Por otro lado, ¿qué significa la recuperación, precisión, f1score y soporte para estos datos ?. ¿Qué puedo decir sobre estos datos? Gracias de antemano chicos
El informe de clasificación debe ser sencillo: un informe de P / R / F-Measure para cada elemento en sus datos de prueba. En los problemas de Multiclass, no es una buena idea leer Precisión / Retirada y F-Medir sobre los datos completos, cualquier desequilibrio le haría sentir que ha alcanzado mejores resultados. Ahí es donde esos informes ayudan.
Llegando a la matriz de confusión, es una representación muy detallada de lo que está sucediendo con tus etiquetas. Entonces, hubo 71 puntos en la primera clase (etiqueta 0). De estos, su modelo fue exitoso al identificar 54 de esos correctamente en la etiqueta 0, pero 17 fueron marcados como etiqueta 4. De manera similar, observe la segunda fila. Hubo 43 puntos en la clase 1, pero 36 de ellos fueron marcados correctamente. Su clasificador predijo 1 en clase 3 y 6 en clase 4.
Ahora puedes ver el patrón que sigue. Un clasificador ideal con 100% de precisión produciría una matriz diagonal pura que tendría todos los puntos previstos en su clase correcta.
Viene a llamar / Precisión. Son algunas de las medidas más utilizadas para evaluar qué tan bueno funciona su sistema. Ahora tenía 71 puntos en primera clase (llámalo clase 0). De ellos, su clasificador pudo obtener 54 elementos correctamente. Ese es tu recuerdo. 54/71 = 0.76. Ahora mira solo la primera columna en la tabla. Hay una celda con la entrada 54, el resto son todos ceros. Esto significa que su clasificador marcó 54 puntos en la clase 0, y los 54 de ellos en realidad estaban en la clase 0. Esto es precisión. 54/54 = 1. Observe la columna marcada 4. En esta columna, hay elementos dispersos en las cinco filas. 367 de ellos fueron marcados correctamente. Descansar todos son incorrectos. Entonces eso reduce tu precisión.
F Measure es el promedio armónico de Precision and Recall. Asegúrate de leer detalles sobre estos. https://en.wikipedia.org/wiki/Precision_and_recall
Aquí está la documentación para el método sklearn.metrics.precision_recall_fscore_support de scikit-learn: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html#sklearn.metrics.precision_recall_fscore_support
Parece indicar que el soporte es el número de ocurrencias de cada clase particular en las respuestas verdaderas (respuestas en su conjunto de pruebas). Puede calcularlo sumando las filas de la matriz de confusión.
Confusion Matrix nos dice acerca de la distribución de nuestros valores predichos en todos los resultados reales. Puntuaciones de precisión, recuperación (sensibilidad), precisión, especificidad y otras métricas similares son subconjuntos de la matriz de confusión. Los puntajes de F1 son los medios armónicos de precisión y recuperación. Las columnas de ayuda en Classification_report nos informan sobre los recuentos reales de cada clase en los datos de prueba. Bueno, el descanso se explica arriba maravillosamente. Gracias.