我是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的代码是使用函数,而你的代码是一组点集合,因此你将无法使用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
之前我写了一个小型的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)