我是 Torch 的新手,我正在研究一个问题,我必须描述接收器操作特性 (ROC) 曲线及其曲线下面积 (AUC)。
我必须数组:TPrate
在 y 轴和FPrate
x 轴上,同时具有大小n
如何在 Torch7 或 Lua 中计算此函数的曲线下面积?
我还从 JayClascoe.com 找到了这段代码,但我不知道如何使用它的功能。
我是 Torch 的新手,我正在研究一个问题,我必须描述接收器操作特性 (ROC) 曲线及其曲线下面积 (AUC)。
我必须数组:TPrate
在 y 轴和FPrate
x 轴上,同时具有大小n
如何在 Torch7 或 Lua 中计算此函数的曲线下面积?
我还从 JayClascoe.com 找到了这段代码,但我不知道如何使用它的功能。
您将无法使用 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
前段时间我写了一个小火炬包,它能够计算 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)