最近準備したデータセットで既製のアルゴリズムの精度と再現率を計算しています。
これはバイナリ分類の問題であり、作成した各分類子の精度、再現率、および f スコアを計算しようとしています。
test_x, test_y, predics, pred_prob,score = CH.buildBinClassifier(data,allAttribs,0.3,50,'logistic')
build classifier メソッドは、基本的に分類器を構築し、トレーニング データに適合させ、test_x (テスト データの特徴)、test_y (グラウンド トゥルース ラベル)、predict (分類器によって行われた予測)、red_prob (LogisiticRegression.predict_proba
メソッドからの予測確率) を返します。 .
以下は、精度と再現率を計算するためのコードです。
from sklearn.metrics import precision_recall_curve
pr, re, _ = precision_recall_curve(test_y,pred_prob,pos_label=1)
pr
(array([ 0.49852507, 0.49704142, 0.49554896, 0.49702381, 0.49850746,
0.5 , 0.5015015 , 0.50301205, 0.50453172, 0.50606061,
. . . . . . .
0.875 , 1. , 1. , 1. , 1. ,
1. , 1. , 1. , 1. ])
re
array([ 1. , 0.99408284, 0.98816568, 0.98816568, 0.98816568,
0.98816568, 0.98816568, 0.98816568, 0.98816568, 0.98816568,
. . . . . . .
0.04142012, 0.04142012, 0.03550296, 0.0295858 , 0.02366864,
0.01775148, 0.01183432, 0.00591716, 0. ]))
なぜ精度配列と再現率配列なのかわかりません。それらは単一の数字であるべきではありませんか?
精度はtpf/(tpf+fpf)
定義として計算され、同様にリコールされるためですか?
次のコードで精度と再現率の平均を計算することは知っていますが、tpf、fpf、精度、再現率の代わりに配列を見ると、何が起こっているのか疑問に思います。
from sklearn.metrics import precision_recall_fscore_support as prf
precision,recall,fscore,_ = prf(test_y,predics,pos_label=1,average='binary')
編集:ただし、パラメーターがないaverage
とpos_label
、各クラスの精度が報告されます。誰かがこれら 2 つの方法の出力の違いを説明できますか?