Как использовать sklearn.metrics для вычисления микро / макро мер для задачи классификации с несколькими метками?

У меня есть результаты, полученные с помощью классификатора с несколькими метками, для которых я хочу вычислить микро- и макроточность, отзыв и оценки 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) чем для каждого ярлыка в отдельности?

Спасибо!


person I Z    schedule 02.11.2015    source источник


Ответы (1)