マルチラベル分類器によって生成された結果があり、Python を使用してミクロ精度とマクロ精度、リコール、および F1 スコアを計算したいのですがsklearn.metrics
、その方法がわかりません。
2 つのバイナリ スパース行列がdataOUT
ありdataGT
、それぞれが同じデータセットの分類結果とグラウンド トゥルースを表しています。両方の行列のサイズはnLabels X nSamples
です。各サンプルは、1 つ以上のラベルでラベル付けできます。分類器が th 番目のサンプルをth ラベルでラベル付けした場合もそうですdataOUT[i,j]
。1
j
i
0
特定の class について、から th 行を抽出することで、通常の精度、再現率、およびi
F スコアを簡単に計算でき、それらを にフィードできます。たとえば、次のようになります。i
dataOUT
dataGT
sklearn.metrics.precision_recall_fscore_support
import numpy as np
from sklearn.metrics import precision_recall_fscore_support
iLabel = 5 # some specific label
yOUT = np.asarray(dataOUT[iLabel,:].todense()).reshape(-1)
yGT = np.asarray(dataGT[iLabel,:].todense()).reshape(-1)
ps,rs,fs,ss = precision_recall_fscore_support(yGT,yOUT)
p = ps[1] # Precision for iLabel
r = rs[1] # Recall for iLabel
f1 = fs[1] # F1 for iLabel
しかし、データセット全体のミクロおよびマクロ測定値を計算するにはどうすればよいですか(dataOUT,dataGT)
。ラベルごとに個別に?
どうも!