gpt4 book ai didi

python - 如何使用 sklearn.metrics 计算多标签分类任务的微观/宏观度量?

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:46 28 4
gpt4 key购买 nike

我有一个多标签分类器生成的结果,我想使用 sklearn.metrics 计算微观和宏观精度、召回率和 F1 分数在 python 中,但不太清楚如何。

我有两个二元稀疏矩阵,dataOUTdataGT分别表示同一数据集的分类结果和基本事实。两个矩阵的大小均为 nLabels X nSamples 。每个样本都可以标记一个或多个标签,因此 dataOUT[i,j]1如果分类器标记为 j第一个样本 i th 标签,和 0否则。

对于任何给定的类 i ,我可以通过提取 i 轻松计算常规精度、召回率和 F 分数来自 dataOUT 的第 3 行和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)配对而不是分别为每个标签?

谢谢!

最佳答案

scikit-learn 中的大多数指标都支持多标签参数。 sklearn.metrics.precision_recall_fscore_support如果文档说:

1d array-like, or label indicator array / sparse matrix

你可以用整个 y 矩阵和真实矩阵来提供度量。但这些矩阵必须具有形状 [n_samples, n_labels],换句话说,该矩阵的每一行必须对应于同一样本的一组标签,每列必须对应于某个标签。所以你应该转置你的矩阵。

ps,rs,fs,ss = precision_recall_fscore_support(dataGT.T, dataOUT.T)

另请阅读此Multiclass and multilabel classification

关于python - 如何使用 sklearn.metrics 计算多标签分类任务的微观/宏观度量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486596/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com