【发布时间】:2016-02-02 20:47:27
【问题描述】:
我有一个多标签分类器产生的结果,我想在 python 中使用sklearn.metrics 计算微观和宏观精度、召回和 F1 分数,但不太清楚如何计算。
我有两个二元稀疏矩阵dataOUT 和dataGT,它们分别代表同一数据集的分类结果和基本事实。两个矩阵的大小都是nLabels X nSamples。每个样本都可以用一个或多个标签进行标记,因此如果分类器标记为jth 的样本带有ith 标签,则dataOUT[i,j] 是1,否则0。
对于任何给定的类i,我可以通过从dataOUT 和dataGT 中提取ith 行来轻松计算常规精度、召回率和F-score,可以将它们提供给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) 对而不是分别为每个标签?
谢谢!
【问题讨论】:
标签: python scikit-learn precision-recall