如何从TPR的标签和概率中找到TPR和TPR来评估我的模型?



我需要帮助关于我在这个问题中问的数据框架Link。现在我要计算这个模型,求出总数;比如找到True Positive RateFalse Negative Rate。这就是预测概率和实际情况的正确程度。我已经准备了一个像下面这样的数据框架,在这个数据框架中,我想要的是,如果基本事实意味着原始标签,它在一个列中,对于单个或多个标签,可能更大。简而言之

我分享文件上传的链接:https://drive.google.com/file/d/1AoDI7kJyFDyAD2Gurz8SOQUGOVckwE57/view?usp=sharing

如果不明白,我在下面解释:

img_name       label                     14 disease col- containing probab- of each class
0001        [[[0.0, 0.0, 1024.0, 1024.0]], ['Emphysema','Hernia']]  0.4,0.6,0.9,0.8, 0.8

详情见示例csv的链接。

如果标签col-在其余14列中具有最高概率将是True Positive Value,则我想获得真正。如何得到这个我无法理解,因为我正在验证另一个数据集/测试数据上的模型。有些图片有多标签,所以我也想要,例如上传的文件有这个例子。

From your newDataFrame:

>>> import pandas as pd
>>> df
file    set     label                                        bbx    Atelectasis Cardiomegaly    Consolidation   Edema   Effusion    Emphysema   Fibrosis    Hernia  Infiltration    Mass    Nodule  Pleural_Thickening  Pneumonia   Pneumothorax
0   00000003_000.png    Test    [[[0.0, 0.0, 1024.0, 1024.0]], ['Hernia']]  False   0.145712    0.028958    0.205006    0.055228    0.115680    0.376638    0.349124    0.357694    0.122496    0.202218    0.075018    0.118994    0.195345    0.215577
1   00000003_001.png    Test    [[[0.0, 0.0, 1024.0, 1024.0]], ['Hernia']]  False   0.132639    0.046136    0.169713    0.092743    0.285383    0.614464    0.311035    0.344040    0.117032    0.447748    0.152327    0.094364    0.174125    0.316022
2   00000003_002.png    Test    [[[0.0, 0.0, 1024.0, 1024.0]], ['Hernia']]  False   0.233026    0.042541    0.227911    0.047988    0.116835    0.595102    0.330304    0.367272    0.117985    0.298624    0.109354    0.133473    0.185444    0.379627
3   00000003_003.png    Test    [[[0.0, 0.0, 1024.0, 1024.0], [0.0, 0.0, 1024....   False   0.298693    0.022646    0.237977    0.035348    0.143645    0.487804    0.384509    0.379062    0.083205    0.625744    0.102377    0.207353    0.184517    0.354402
4   00000003_004.png    Test    [[[0.0, 0.0, 1024.0, 1024.0]], ['Hernia']]  False   0.522152    0.052897    0.237475    0.082139    0.200029    0.473421    0.377468    0.336104    0.106339    0.488078    0.088047    0.146686    0.200919    0.313684

我们可以使用idxmax获取每一行的最大值的列名,如下所示:

>>> df["predicted_class"] = df.drop(['file', 'set', 'label', 'bbx'], axis=1).idxmax(axis=1)
>>> df["predicted_class"].head()
0      Emphysema
1      Emphysema
2      Emphysema
3           Mass
4    Atelectasis
Name: predicted_class, dtype: object

然后我们使用lambda检查该列名是否出现在labels列中,以获得True PositiveTrue Negative的布尔值:

>>> df['evaluation'] = df.apply(lambda x: x["predicted_class"] in x["label"], axis=1)
>>> df['evaluation'].head()
0    False
1    False
2    False
3    False
4    False
Name: evaluation, dtype: bool

最后,我们可以让TPR对应每个class:

>>> df.groupby('predicted_class')['evaluation'].mean()
predicted_class
Atelectasis    0.000000
Emphysema      0.285714
Mass           0.000000
Name: evaluation, dtype: float64

相关内容

  • 没有找到相关文章