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

时间:2014-02-19 01:30:53

标签: lua roc auc

我是Torch的新手,我正在研究一个问题,我必须描述接收器工作特性(ROC)曲线及其曲线下面积(AUC)。

我需要数组:y轴上为TPrate,x轴上为FPrate,尺寸为n

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

我还找到this code from JayClascoe.com,但我不知道如何使用它的功能。

2 个答案:

答案 0 :(得分:3)

您无法使用JayClascoe的代码,因为它与函数一起使用,而您的代码是一组点。假设FPrate已排序的x坐标的x值和TPrate具有相应的值,则可以使用Trapezoidal rule。这样的事情可能有用:

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

答案 1 :(得分:2)

前段时间我写了一个小火炬包,能够计算出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)