Torch/Lua,如何计算曲线下面积(AUC)?

3

我是Torch的新手,正在处理一个问题,需要绘制接收器操作特性(ROC)曲线及其曲线下面积(AUC)。

我有两个数组:TPrate在y轴上,FPrate在x轴上,它们都具有大小为n

如何在Torch7或Lua中计算此函数的曲线下面积?

我还发现了JayClascoe.com的代码,但我不知道如何使用它的函数。

2个回答

3

由于JayClascoe的代码是使用函数,而你的代码是一组点集合,因此你将无法使用JayClascoe的代码。假设 FPrate 包含按x坐标排序的x值,TPrate 包含相应的值,你可以使用梯形公式进行计算。以下示例代码可能会有所帮助:

local area = 0
for i = 2, n do
  area = area + (FPrate[i] - FPrate[i-1]) * (TPrate[i-1] + TPrate[i])/2
end

谢谢。应该是:area + ( (FPrate[n] - FPrate[n-1]) * (TPrate[n-1] + TPrate[n]) ) /2?在/2之前再加上两个括号? - DavideChicco.it
1
在这种情况下,这不应该有影响,对吧? - Paul Kulchenko

2

之前我写了一个小型的Torch包,可以计算ROC点和曲线下面积。我的代码在github上,你可以去看一下并试用:

https://github.com/hpenedones/metrics

如果对你有帮助或发现任何问题,请告诉我。以下是如何使用它的示例:

require 'torch'
metrics = require 'metrics'
gfx = require 'gfx.js'

resp = torch.DoubleTensor { -0.9, -0.8, -0.8, -0.5, -0.1, 0.0, 0.2, 0.2, 0.51, 0.74, 0.89}
labels = torch.IntTensor  { -1, -1 , 1, -1, -1, 1, 1, -1, -1, 1, 1 }

roc_points, thresholds = metrics.roc.points(resp, labels)
area = metrics.roc.area(roc_points)

print(area)

gfx.chart(roc_points)

1
嗨,Hugo,我想使用你的包,但是我无法安装它。我该怎么做才能安装它?谢谢。 - DavideChicco.it
嗨,Davide,我已经在Github上更新了README文件,并添加了安装说明。 - Hugo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接