Tôi có một nhiệm vụ phân tích tình cảm, đối với Im này sử dụng corpus này là những ý kiến có 5 lớp (very neg
, neg
, neu
, pos
, very pos
), từ 1 đến 5. Vì vậy, tôi làm việc phân loại như sau:Làm thế nào để giải thích ma trận nhầm lẫn về ma trận học và báo cáo phân loại của scikit?
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)
sau đó, với các số liệu tôi có được ma trận nhầm lẫn và phân loại báo cáo sau đây, như sau:
print '\nClasification report:\n', classification_report(y_test, svm_1_prediction)
print '\nConfussion matrix:\n',confusion_matrix(y_test, svm_1_prediction)
sau đó, đây là kết quả:
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]]
Tôi làm cách nào để diễn giải báo cáo phân loại và ma trận nhầm lẫn ở trên. Tôi đã thử đọc số documentation và số này question. Nhưng vẫn có thể giải thích những gì đã xảy ra ở đây đặc biệt với dữ liệu này ?. Wny ma trận này là bằng cách nào đó "chéo" ?. Mặt khác có nghĩa là thu hồi, chính xác, f1score và hỗ trợ cho dữ liệu này ?. Tôi có thể nói gì về dữ liệu này ?. Thanks in advance guys
Vì vậy, khi tôi tính tổng giá trị của ma trận tôi nhận được 857, vì tôi đã tách dữ liệu như sau: 'X_train, X_test, y_train, y_test = cross_validation.train_test_split (X, y, test_size = 0.33)' (33 % cho đào tạo và có 2599 trường hợp ý kiến, tôi có 33% trong số 2599 là 857). Đây là nơi mà các trường hợp 2599 được phản ánh trong ma trận nhầm lẫn ?. Tuy nhiên, như bạn có thể thấy cho nhiệm vụ này tôi đã không "cân bằng" dữ liệu. Khi tôi cân bằng kết quả dữ liệu ở nơi tốt hơn nhiều, Tại sao bạn nghĩ điều này xảy ra ?. –
Ý của bạn là gì với điểm (vectơ ý kiến) ?. Cảm ơn! –
Yup. Mỗi phần tử dữ liệu - được trình bày dưới dạng vectơ đặc trưng. – Aditya