Ich habe eine Stimmungsanalyse Aufgabe, für dieses Im diese corpus mit den Meinungen 5 Klassen (very neg
, neg
, neu
, pos
, very pos
), von 1 bis 5. So kann ich die Klassifizierung wie folgt:Wie interpretiere ich Scikits Lernmatrix und Klassifikationsbericht?
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)
dann mit den Messdaten gewonnen I den folgenden Konfusionsmatrix und Klassifizierungsbericht, wie folgt:
print '\nClasification report:\n', classification_report(y_test, svm_1_prediction)
print '\nConfussion matrix:\n',confusion_matrix(y_test, svm_1_prediction)
Dann wird dieses Ergebnis:
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]]
Wie kann ich die obige Konfusionsmatrix und den Klassifizierungsbericht interpretieren? Ich habe versucht, die documentation und diese question zu lesen. Aber trotzdem kann man mit diesen Daten interpretieren, was hier passiert ist. Wny diese Matrix ist irgendwie "diagonal" ?. Auf der anderen Seite bedeutet das den Rückruf, die Genauigkeit, die Bewertung und die Unterstützung für diese Daten. Was kann ich zu diesen Daten sagen? Vielen Dank im Voraus Jungs
Also, wenn ich die Werte der Matrix summiere, bekomme ich 857, da ich die Daten wie folgt aufgeteilt habe: 'X_zug, X_test, y_zug, y_test = cross_validation.train_test_split (X, y, test_size = 0,33)' (33 % für Training und es gibt 2599 Meinungsinstanzen, ich habe, dass die 33% von 2599 857 ist). Hier werden die 2599-Instanzen in der Konfusionsmatrix wiedergegeben. Wie Sie jedoch für diese Aufgabe sehen können, habe ich die Daten nicht ausgeglichen. Als ich die Datenergebnisse ausbalancierte, war es viel besser, warum glaubst du, dass das passiert ist? –
Was meinst du mit Punkten (Meinungsvektoren) ?. Vielen Dank! –
Yup. Jedes Datenelement - welches als Merkmalsvektor dargestellt wird. – Aditya