Comment interpréter scikit learn confusion de la matrice et de la classification rapport?
J'ai un sentiment d'analyse de la tâche, pour cette Im en utilisant cette corpus l'opinion de 5 classes (very neg
, neg
, neu
, pos
, very pos
), de 1 à 5. Donc, je ne la classification 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 que j'ai obtenus à la suite de la confusion de la matrice et de la classification rapport, comme suit:
print '\nClasification report:\n', classification_report(y_test, svm_1_prediction)
print '\nConfussion matrix:\n',confusion_matrix(y_test, svm_1_prediction)
Puis, c'est 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 le au-dessus de la confusion de la matrice et de la classification rapport. J'ai essayé la lecture de la la documentation et ce question. Mais ne peut toujours interprétons maintenant ce qui s'est passé ici, en particulier avec ces données?. Wny cette matrice est en quelque sorte "en diagonale"?. En revanche ce que signifie le rappel, la précision, la f1score et le soutien de ces données?. Ce que je peux dire sur ces données?. Merci d'avance les gars
OriginalL'auteur john doe | 2015-06-10
Vous devez vous connecter pour publier un commentaire.
Classification rapport doit être simple - un rapport P/R/F-Mesure pour chaque élément de vos données de test. Dans Multiclass problèmes, il n'est pas une bonne idée de lire Précision/Rappel et F-Mesure sur l'ensemble des données de tout déséquilibre serait vous faire sentir que vous avez atteint de meilleurs résultats. C'est là que de tels rapports.
Venir à la confusion de la matrice, il est beaucoup plus détaillée de la représentation de ce qui se passe avec vos étiquettes. Donc, il y avait 71 points dans la première classe (étiquette 0). En dehors de ces, votre modèle a réussi à identifier 54 de ceux correctement dans l'étiquette de 0, mais 17 ont été marqués comme " l'étiquette 4. De la même façon de regarder la deuxième rangée. Il y a eu 43 points dans la classe 1, mais 36 d'entre eux ont été marqués correctement. Votre classificateur prédite 1 dans la classe 3 et 6 dans la classe 4.
Maintenant, vous pouvez voir le modèle de ce qui suit. Idéal classificateurs avec une précision de 100% serait de produire un pur matrice diagonale qui aurait tous les points prévus dans leur classe.
Venant de Rappel/Précision. Ils sont certains de la plupart du temps utilisé des mesures pour évaluer la façon dont votre système fonctionne. Maintenant vous avez eu 71 points en première classe (appelons-0 classe). De votre classificateur a été en mesure d'obtenir 54 les éléments correctement. C'est votre rappel. 54/71 = 0.76. Maintenant, ne regardez que la première colonne de la table. Il y a une cellule avec entrée 54, repos tous sont des zéros. Cela signifie que votre classificateur marqué 54 points dans la classe 0, et tous les 54 d'entre eux étaient en fait dans la classe 0. C'est la précision. 54/54 = 1. Regardez colonne 4. Dans cette colonne, il y a des éléments dispersés dans toutes les cinq lignes. 367 des ont correctement. Reste tous sont incorrectes. Ceci réduit votre précision.
F Mesure est la moyenne harmonique de la Précision et le Rappel.
Assurez-vous de lire les détails sur ces. https://en.wikipedia.org/wiki/Precision_and_recall
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.33)
(33% pour la formation et il y a 2599 avis des instances, je n'ai que 33% de 2599 est 857). C'est là que le 2599 instances sont reflétées dans la confusion de la matrice?. Cependant, comme vous pouvez le voir, pour cette tâche, je n'ai pas "équilibre" entre les données. Quand j'ai équilibré les résultats des données où beaucoup mieux, Pourquoi pensez-vous de ce qui s'est passé?.Que vouliez-vous dire avec des points(avis vecteurs)?. Merci!
Yup. Chaque élément de données qui est présenté comme une fonction du vecteur.
C'est une parfaite explication. Merci. Pourriez-vous donner une raison pour laquelle la moyenne harmonique est utilisée, pourquoi ne pas l'arithmétique, la géométrie, etc. signifie?
OriginalL'auteur Aditya
Voici la documentation de scikit-learn sklearn.métriques.precision_recall_fscore_support méthode: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html#sklearn.metrics.precision_recall_fscore_support
Il semble indiquer que le support est le nombre d'occurrences de chaque classe dans les réponses (réponses dans votre jeu de test). Vous pouvez le calculer en additionnant les lignes de la matrice de confusion.
OriginalL'auteur Christopher Shymansky
La Confusion de la Matrice nous dit à propos de la distribution de nos valeurs prédites à travers tous les résultats réels.Accuracy_scores, un Rappel(la sensibilité), la Précision, la Spécificité et d'autres mesures sont des sous-ensembles de Confusion de la Matrice.
F1 scores sont l'harmonique de la précision et de rappel.
Les colonnes de soutien en Classification_report nous dire au sujet de la réelle le nombre de chaque classe dans les données de test.
Eh bien, le reste est expliqué ci-dessus magnifiquement.
Merci.
OriginalL'auteur raman kumar