web-dev-qa-db-ja.com

scikitの学習混同マトリックスと分類レポートの解釈方法

私は感情分析タスクを持っています、これを使用してこのImのために コーパス 意見には5つのクラスがあります(very negnegneuposvery 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]]

上記の混同マトリックスと分類レポートをどのように解釈できますか。 ドキュメント とこれ 質問 を読んでみました。しかし、特にこのデータでここで何が起こったのかをまだ解釈できますか?このマトリックスはどういうわけか「対角」ですか?一方、このデータのリコール、精度、f1スコアおよびサポートはどういう意味ですか?このデータについて何が言えますか?よろしくお願いします

17
john doe

分類レポートは、テストデータの各要素のP/R/F-Measureのレポートである必要があります。マルチクラスの問題では、データ全体にわたってPrecision/RecallおよびF-Measureを読んで、不均衡があると、より良い結果に到達したと感じることはお勧めできません。そのようなレポートが役立つところです。

混同マトリックスについては、ラベルで何が起こっているかを非常に詳細に表現しています。したがって、最初のクラス(ラベル0)には71ポイントがありました。これらのうち、モデルはラベル0の54個を正しく識別できましたが、17個はラベル4としてマークされていました。同様に2行目を見てください。クラス1には43ポイントありましたが、そのうち36ポイントは正しくマークされました。分類子は、クラス3で1、クラス4で6を予測しました。

enter image description here

これで、次のパターンを確認できます。 100%の精度を持つ理想的な分類器は、正しいクラスですべてのポイントが予測される純粋な対角行列を生成します。

リコール/精度に来る。これらは、システムがどの程度機能するかを評価する際に主に使用される指標の一部です。これで、ファーストクラスに71ポイントが与えられました(0クラスと呼びます)。それらのうち、分類器は54個の要素を正しく取得できました。それはあなたのリコールです。 54/71 = 0.76。ここで、表の最初の列のみを見てください。エントリ54のセルが1つあり、残りはすべてゼロです。これは、分類子がクラス0で54ポイントをマークし、それらの54個すべてが実際にクラス0にあったことを意味します。これは精度です。 54/54 = 1. 4とマークされた列を見てください。この列には、5行すべてに散在する要素があります。それらの367は正しくマークされました。残りはすべて間違っています。そのため、精度が低下します。

F Measureは、PrecisionとRecallの調和平均です。これらの詳細を必ずお読みください。 https://en.wikipedia.org/wiki/Precision_and_recall

46
Aditya

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

サポートは、真の応答(テストセットの応答)における特定の各クラスの発生回数であることを示しているようです。混同行列の行を合計することで計算できます。

混同マトリックスは、実際のすべての結果にわたる予測値の分布について教えてくれます。 F1スコアは、精度と再現率の調和的な手段です。 Classification_reportのサポート列は、テストデータの各クラスの実際のカウントについて教えてくれます。さて、残りは上で美しく説明されています。ありがとうございました。

0
raman kumar