首先,很抱歉这么长的描述,但我想让每个人都明白我在做什么的问题
我正在研究一个检测模型,该模型可以预测14种不同的病理学,我还制作了一个推理文件,可以预测任何新的测试图像。 数据集有大约25k+的测试图像,我已经找到了它们的预测,并制作了一个类似于Dataframe的文件
在此数据框中,我有(了解我的scnario的信息很少):
image_name______00000003_000.png
label_____[[[0.0, 0.0, 1024.0, 1024.0], [0.0, 0.0, 1024.0, 1024.0], [119.195767195767, 339.166137566138, 470.281481481481, 511.458201058202]], ['Cardiomegaly', 'Edema', 'Infiltration']]
Bounding_Box_____True/False
Atelectasis _____0.172639399766922
Cardiomegaly _____0.064461663365364
Consolidation _____0.436323910951614
Edema _____0.152604594826698
Effusion _____0.077432356774807
Emphysema _____0.569778263568878
Fibrosis _____0.333310723304749
Hernia _____0.219542726874351
Infiltration _____0.240452200174332
Mass _____0.291741400957108
Nodule _____0.076222963631153
Pleural_Thickening_____ 0.294208467006683
Pneumonia _____0.281939893960953
Pneumothorax _____0.386653006076813
我想要什么:
我们可以通过两种方法找到它:例如,为每个单独的类获取这些行。
Like首先查找包含Cardiomegaly
单个或多个标签的所有行
然后应用下面的操作或根据您的需要和专业知识查找TP
我想要的是,如果图像具有像['Cardiomegaly', 'Edema', 'Infiltration']
这样的基本真理,并且具有14种病理学概率。我想找到True Positive
如果这些实际标签的概率值最高:
与Cardiomegaly
一样,如果它找到了最高的prob,那么创建一个新的col
并将其放置True
。我不知道我应该如何处理多标签,在找到第一个后,我应该如何处理第二个label
,如果它的概率最高,那么我可以如何处理。
在@tlentali的帮助下,我做了最后一次尝试。谢谢你的帮助。
以下是我所做的:
df = pd.read_csv('/home/ali/Desktop/CX/sample.csv')
df["best_score"] = df.drop(['file', 'set', 'label', 'bbx'], axis=1).idxmax(axis=1)
df['evaluation'] = df.apply(lambda x: x["best_score"] in x["label"], axis=1)
df.groupby('best_score')['evaluation'].mean()
这让我觉得:
best_score
Atelectasis 0.452465
Cardiomegaly 0.250000
Consolidation 0.123164
Edema 0.029520
Effusion 0.555459
Emphysema 0.068618
Fibrosis 0.066116
Hernia 0.032258
Infiltration 0.400000
Mass 0.177524
Nodule 0.604167
Pleural_Thickening 0.188482
Pneumonia 0.049133
Pneumothorax 0.108156
Name: evaluation, dtype: float64
这不是我想要的,它只适用于单个标签,不适用于多个标签。 请帮帮我,很抱歉这么长的描述,但只是每个人都明白我想要什么。 多谢各位
从您的
DataFrame
中:首先,我们
eval
列label
以提取我们期望预测的类:然后,我们
explode
列class
按行获得预期的类,如下所示:然后,我们将数据转换为dummies格式:
由于我们目前正在处理一个玩具数据集,我们必须进行一些调整,以便将所有需要的类作为假人格式进行利用:
现在,我们可以使用
sklearn
来获得我们的TRP
,并最终得到AUC
:现在,我们可以看一下
roc_auc
值,nan
是由于并非所有类都在玩具数据集中预测的事实:现在,我们可以基于每个类的
TPR
和FPR
绘制ROC_AUC
曲线(注意classe
这里,当我们处理玩具数据集时,一些类是空的):相关问题 更多 >
编程相关推荐