如何在 Python 中计算 TAR (%) @ FAR = 0.1%?

问题描述 投票:0回答:2

我正在阅读一篇论文,论文中的结果是这样呈现的:

我想为我的模型准备一个类似的表格。使用下面的代码我得到了 FAR 和 TAR 值。

from sklearn import metrics

test = [0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,1, 0]        
pred = [0.04172871, 0.01611879, 0.01073375, 0.03344169 ,0.04172871, 0.04172871, 0.00430162 ,0.04172871 ,0.04172871 ,0.04172871 ,0.07977659, 0.905772,0.9396076,  0.03344169, 0.04172871, 0.09125287, 0.02964183, 0.0641269,0.04172871 ,0.04172871, 0.04172871, 0.0641269 , 0.04172871, 0.04172871,0.9919831 , 0.04172871, 0.01611879 ,0.04172871, 0.37865442 ,0.00240888]
far, tar, thresholds = metrics.roc_curve(Y_test,p)

我应该如何修复 FAR = 0.1% 以及如何使用 Python 计算 TAR% @FAR = 0.1%?

python machine-learning
2个回答
1
投票

如果您熟悉 ROC 曲线,您就会知道曲线本身不会为您的模型提供任何特定的

TRP (True Positive Rate)
FPR (False positive Rate)
值。当您在模型生成的分布上移动某个阈值时,它只是跟踪
TPR
相对于
FPR
的演变。

因此,如果您想在

TPR
处计算
FPR=0.1%
,您有几个选择:

您可以在

FPR = 0.1%
中拥有值
far
,只需检索其索引即可在同一位置获取相应的
TRP
tar

或者您在

FPR=0.1%
中没有精确值
far
,在这种情况下,您可以获取值
(far, tar)
下方和上方对应的元组
0.1%
并执行线性插值来计算精确值。


0
投票

这与 TDR @% FDR 不同吗?或者我应该有 ROC 曲线和输出 TPR @% FPR ?我坚持这个@Yoan B.M.Sc

© www.soinside.com 2019 - 2024. All rights reserved.