Подтвердить что ты не робот

Как интерпретировать scikit изучать матрицу путаницы и классификационный отчет?

У меня есть задача анализа настроений, для этого Im, используя этот корпус, мнения имеют 5 классов (very neg, neg, neu, pos, very pos), от 1 до 5. Поэтому я делаю классификацию следующим образом:

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)

Затем с метриками я получил следующую матрицу смешения и отчет о классификации следующим образом:

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

Тогда это результат:

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

Как я могу интерпретировать приведенную выше таблицу путаницы и классификационный отчет. Я пробовал читать документацию и question. Но все же можно интерпретировать то, что здесь произошло, особенно с этими данными?. Wny эта матрица как-то "диагональна"?. С другой стороны, что означает отзыв, точность, f1score и поддержка этих данных?. Что я могу сказать об этих данных?. Спасибо заранее, ребята

4b9b3361

Ответ 1

Отчет о классификации должен быть простым - отчет P/R/F-Measure для каждого элемента в тестовых данных. В задачах многоклассификации не рекомендуется читать Precision/Recall и F-Measure по всем данным, любой дисбаланс заставит вас почувствовать, что вы достигли лучших результатов. То, где такие отчеты помогают.

Приходя к матрице замешательства, это очень подробное представление о том, что происходит с вашими ярлыками. Таким образом, в первом классе было 71 очко (метка 0). Из них ваша модель успешно идентифицировала 54 из них правильно в метке 0, но 17 были отмечены как метка 4. Аналогично посмотрите на вторую строку. В классе 1 было 43 балла, но 36 из них были отмечены правильно. Ваш классификатор предсказал 1 в классах 3 и 6 в классе 4.

enter image description here

Теперь вы можете увидеть, как это выглядит. Идеальные классификаторы со 100-процентной точностью создавали бы чистую диагональную матрицу, которая имела бы все точки, предсказанные в их правильном классе.

Возвращение/Точность. Это некоторые из наиболее часто используемых мер при оценке эффективности вашей системы. Теперь у вас было 71 очко в первом классе (назовите его 0 классом). Из них ваш классификатор смог получить 54 элемента правильно. Это ваш отзыв. 54/71 = 0,76. Теперь посмотрим только на первый столбец в таблице. Есть одна ячейка со входом 54, остальные - нули. Это означает, что ваш классификатор маркировал 54 точки в классе 0, и все 54 из них были фактически в классе 0. Это точность. 54/54 = 1. Посмотрите на столбец с пометкой 4. В этом столбце есть элементы, разбросанные по всем пяти строкам. 367 из них были отмечены правильно. Остальные все неверны. Это уменьшает вашу точность.

F Измерение представляет собой гармоническое среднее точности и повторения. Обязательно прочитайте подробности об этом. https://en.wikipedia.org/wiki/Precision_and_recall

Ответ 2

Здесь документация для scikit-learn sklearn.metrics.precision_recall_fscore_support метода: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html#sklearn.metrics.precision_recall_fscore_support

Кажется, что поддержка - это количество вхождений каждого конкретного класса в истинные ответы (ответы в вашем тестовом наборе). Вы можете рассчитать его, суммируя строки матрицы замешательства.

Ответ 3

Confusion Matrix рассказывает нам о распределении наших прогнозируемых значений по всем фактическим результатам. Accuracy_scores, Recall (чувствительность), точность, специфика и другие подобные показатели являются подмножествами матрицы Confusion. Показатели F1 - это гармонические средства точности и запоминания. Столбцы поддержки в Classification_report рассказывают нам о фактических подсчетах каждого класса в тестовых данных. Хорошо, отдых объясняется выше красиво. Спасибо.