2016-06-22 13 views
0

metrics.classification_reportの(recall、precison、fi-score)とmetrics.precision_score、metrics.recall_score、metricsで別々に使用した場合の同じメトリクスの違いは何ですか? .f1スコア。レポートの平均/合計は、精度と一致しないのはなぜ、これはPIC のようになりましたI上記のコードを実行するとSklearnの異なるメトリックに2つの異なる結果があるのはなぜですか?

は、誰かが違い

from sklearn.svm import LinearSVC 
clf_svm_linear = LinearSVC(C=20.0) 
clf_svm_linear.fit(X_train, y_train) 
y_pred = clf_svm_linear.predict(X_test) 
print ' Results on Validation data' 
print metrics.classification_report(y_test, y_pred, target_names=['No Diabetes', 'Diabetes']) 
print "===================================================================" 
print "The accuracy on validation dataset of Linear SVM: \t",  metrics.accuracy_score(y_test, y_pred) 
print "Precision on validation dataset of Linear SVM: \t", metrics.precision_score(y_test, y_pred) 
print "Recall on validation dataset of Linear SVM :  \t", metrics.recall_score(y_test, y_pred) 
print "F1 score on validation dataset of Linear SVM:  \t", metrics.f1_score(y_test, y_pred) 

をこのコードを見て、説明リコールを喜ばせることができます自分のスコアを単独で印刷するときはf1-scoreを返します。 、精度の通話が要約に糖尿病の精度に対応して、なぜ、これがある - enter image description here

答えて

1

precision_score は、それが(糖尿病、あなたのケースで)クラスのいずれかが正の1である精度で、平均ではありません同様に - これらの人のリコールとf1。非対称メトリックの平均をとることは、それをバランスさせることであり、「通常の」メトリックと同じではありません。

平均取得するためには、あなたが

print 0.5 * (metrics.precision_score(y_test, y_pred, pos_label='No Diabetes') + 
      metrics.precision_score(y_test, y_pred, pos_label='Diabetes')) 
+0

結果を報告する際には、「通常の」メトリックを考慮する必要があります。 frommetrics.classification_report –

+1

報告内容によって異なります。それぞれのメトリックは意味のあるものを測定し、問題の観点から報告するのに合理的であるものは全く別の話です。 – lejlot

関連する問題