web-dev-qa-db-fra.com

Comment interpréter la matrice de confusion et le rapport de classification de Scikit?

J'ai une tâche d'analyse de sentiment, pour cela, j'utilise ce corpus les opinions ont 5 classes (very neg, neg, neu, pos, very pos), de 1 à 5. Je procède donc comme suit

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)

Ensuite, avec les mesures, j’ai obtenu la matrice de confusion et le rapport de classification suivants:

print '\nClasification report:\n', classification_report(y_test, svm_1_prediction)
print '\nConfussion matrix:\n',confusion_matrix(y_test, svm_1_prediction)

Alors, voici le résultat:

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]]

Comment puis-je interpréter la matrice de confusion et le rapport de classification ci-dessus? J'ai essayé de lire la documentation et cette question . Mais peut encore interpréter ce qui s’est passé ici en particulier avec ces données ?. Si cette matrice est en quelque sorte "diagonale"? Par ailleurs, que signifient le rappel, la précision, le score et le support de ces données?. Que puis-je dire à propos de ces données? Merci d'avance les gars

17
john doe

Le rapport de classification doit être simple: un rapport de mesure P/R/F pour chaque élément de vos données de test. Dans les problèmes multiclass, ce n'est pas une bonne idée de lire Precision/Recall et F-Measure sur l'ensemble des données. Tout déséquilibre vous donnerait le sentiment d'obtenir de meilleurs résultats. C'est là que de tels rapports aident.

En ce qui concerne la matrice de confusion, il s'agit d'une représentation détaillée de ce qui se passe avec vos étiquettes. Donc, il y avait 71 points dans la première classe (étiquette 0). Parmi ceux-ci, votre modèle a réussi à identifier 54 personnes correctement dans l'étiquette 0, mais 17 ont été étiquetées comme étiquette 4. De même, regardez à la deuxième ligne. Il y avait 43 points dans la classe 1, mais 36 d’entre eux ont été marqués correctement. Votre classificateur prédit 1 en classe 3 et 6 en classe 4.

enter image description here

Vous pouvez maintenant voir le motif qui suit. Un classificateur idéal avec une précision de 100% produirait une matrice diagonale pure qui aurait tous les points prédits dans la classe correcte. 

Venir à rappeler/précision. Ce sont quelques-unes des mesures les plus utilisées pour évaluer le bon fonctionnement de votre système. Maintenant, vous aviez 71 points en première classe (appelez-la 0 classe). Hors d'eux votre classificateur a pu obtenir 54 éléments correctement. C'est ton rappel. 54/71 = 0,76. Maintenant, ne regardez que dans la première colonne du tableau. Il y a une cellule avec l'entrée 54, les autres sont tous des zéros. Cela signifie que votre classificateur a marqué 54 points en classe 0, et que tous les 54 d'entre eux étaient en réalité en classe 0. C'est de la précision. 54/54 = 1. Regardez la colonne marquée 4. Dans cette colonne, il y a des éléments dispersés dans les cinq rangées. 367 d'entre eux ont été marqués correctement. Reste tous sont incorrects. Cela réduit donc votre précision.

F La mesure est la moyenne harmonique de précision et de rappel. Assurez-vous de lire les détails à ce sujet. https://en.wikipedia.org/wiki/Precision_and_recall

46
Aditya

Confusion Matrix nous informe sur la répartition de nos valeurs prédites sur tous les résultats réels. Les scores d'exactitude, les rappels (sensibilité), la précision, la spécificité et d'autres mesures similaires sont des sous-ensembles de Confusion Matrix. Les colonnes de support dans Classification_report nous renseignent sur le nombre réel de chaque classe dans les données de test . Eh bien, le reste est expliqué magnifiquement ci-dessus . Merci.

0
raman kumar