4

R当通过 2 个不同的包计算时,我发现使用我正在处理的数据集计算精确召回曲线下面积 (PRAUC) 的不同数值:yardstickcaret.
恐怕我无法用合成数据重现这种不匹配,但只能用我的数据集(这也很奇怪)

为了让这个可重现,我分享了我的模型的预测输出,你可以在这里下载https://drive.google.com/open?id=1LuCcEw-RNRcdz6cg0X5bIEblatxH4Rdz(别担心,这是一个小 csv) .
csv 包含一个具有 4 列的数据框:
yes在类中的概率估计yes
no= 1 -yes
obs实际类标签
pred预测类标签(阈值为 0.5)

下面是生成 PRAUC 的 2 个值的代码

require(data.table)
require(yardstick)
require(caret)
pr <- fread('pred_sample.csv')
# transform to factors
# put the positive class in the first level
pr[, obs := factor(obs, levels = c('yes', 'no'))] 
pr[, pred := factor(pred, levels = c('yes', 'no'))] # this is actually not needed

# compute yardstick PRAUC
pr_auc(pr, obs, yes) # 0.315

# compute caret PRAUC
prSummary(pr, lev = c('yes', 'no')) # 0.2373

由于计算面积(插值曲线)时的近似值,我可以理解一些差异,但这似乎太高了。

我什至尝试了第三个包,PRROC结果仍然不同,即 0.26 左右。

4

0 回答 0