У меня есть результаты, полученные с помощью классификатора с несколькими метками, для которых я хочу вычислить микро- и макроточность, отзыв и оценки F1 с использованием sklearn.metrics
в python, но не могу понять, как это сделать.
У меня есть две двоичные разреженные матрицы, dataOUT
и dataGT
, которые представляют, соответственно, результаты классификации и основную истину для одного и того же набора данных. Обе матрицы имеют размер nLabels X nSamples
. Каждый образец может быть помечен одной или несколькими метками, поэтому dataOUT[i,j]
равно 1
, если классификатор пометил j
-й образец i
-й меткой, и 0
в противном случае.
Для любого заданного класса 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
Но как мне рассчитать микро- и макромеры для всего набора данных, т.е. как получить одну троек микро- (P, R, F) и одну макро- (P, R, F) для пары (dataOUT,dataGT)
чем для каждого ярлыка в отдельности?
Спасибо!