在 R 中:计算精确率/召回率曲线下的面积 (AUPR)?

2024-03-30

假设我有两个矩阵:A代表标签矩阵,B代表A对应的预测概率矩阵。现在我想根据矩阵A和B计算AUPR(精确率/召回率曲线下的面积)。对于常见的AUC(Area Under Precision/Recall Curve) ROC Curve),R中有很多包,例如ROCR、pROC,可以直接计算AUC值,但是目前R中哪些包可以计算AUPR?或者你能帮忙给出计算AUPR的方法吗? 这是两个示例矩阵:

> pp
        [,1]    [,2]     [,3]    [,4]    [,5]     [,6]    [,7]
[1,] 0.01792 0.00155 -0.00140 0.00522 0.01320  0.22506 0.00454
[2,] 0.05883 0.11256  0.82862 0.12406 0.08298 -0.00392 0.30724
[3,] 0.00743 0.06357  0.14500 0.00213 0.00545  0.03452 0.11189
[4,] 0.02571 0.01460  0.01108 0.00494 0.01246  0.11880 0.05504
[5,] 0.02407 0.00961  0.00720 0.00382 0.01039  0.10974 0.04512

> ll
        D00040 D00066 D00067 D00075 D00088 D00094 D00105
hsa190       0      0      0      0      0      1      0
hsa2099      0      1      1      0      0      0      1
hsa2100      0      0      0      0      0      0      1
hsa2101      0      0      0      0      0      0      0
hsa2103      0      0      0      0      0      0      0

pp是真实标签的预测概率矩阵ll矩阵,以及ll只是标签矩阵。

提前致谢。


我首先将预测分数和类别转换为矩阵中的向量。

有一个“PRROC”包提供了与“ROCR”类似的生成ROC和PRC的功能,并且它还给出了PRC的AUC。

具体来说,我正在使用数据ROCR.simple以“ROCR”包为例。

library(PRROC)
library(ROCR)
data("ROCR.simple")
scores <- data.frame(ROCR.simple$predictions, ROCR.simple$labels)
pr <- pr.curve(scores.class0=scores[scores$ROCR.simple.labels=="1",]$ROCR.simple.predictions,
             scores.class1=scores[scores$ROCR.simple.labels=="0",]$ROCR.simple.predictions,
             curve=T)

请注意,在此函数中,“分数.class0“ 需要是分数positive类(这有点令人困惑,因为我个人认为 0 为负数,1 为正数)。所以我调换了0和1的顺序。

这样PR曲线和AUC就全部保存在pr多变的。

pr

Precision-recall curve

Area under curve (Integral):
 0.7815038 

Area under curve (Davis & Goadrich):
 0.7814246 

Curve for scores from  0.005422562  to  0.9910964 
( can be plotted with plot(x) )

然后,您可以使用以下命令绘制 PRCplot(pr)或使用 ggplot:

y <- as.data.frame(pr$curve)
ggplot(y, aes(y$V1, y$V2))+geom_path()+ylim(0,1)

得到的曲线与ROCR包制作的曲线相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中:计算精确率/召回率曲线下的面积 (AUPR)? 的相关文章

  • 如何将 r 数据框转换为 h2o 对象

    我对 R 和 H2O 很陌生 我试图找到一种将 r 数据帧转换为 h2o 对象的方法 我花了一些时间研究如何做到这一点 但没有运气 其他方式也是可能的 并且有详细记录如下 prosPath system file extdata prost
  • 有没有一种简单的方法可以在 R 的 igraph 中按度数对网络节点进行着色?

    使用igraphR 包 我想按度数对网络节点进行着色 颜色应代表渐变 例如从蓝色到红色 或从黄色到红色 从网络中观察到的最低程度到最高程度 我找到了一个可行的解决方案 https stackoverflow com questions 40
  • 使用 ggplot 2 使用线条或线段将堆栈条形图与多个组连接起来

    我正在对一些患有某种疾病的患者进行一项研究 并在 3 个不同的时间点使用顺序量表评估功能状态 我想在这些时间点的堆叠条形图中连接多个组 我查看了这些主题 但尚未使用这些建议使其发挥作用 如何将线条放置在堆积条形图的边缘 https stac
  • 如何使用“NA”作为字符串

    我有一个 csv 文件 其中一列是字符类型 该变量的很少有值是 NA 字符串 但是当我使用 read csv 读取 R 中的 csv 文件时 NA 字符串存储为 NA 我该如何修复它 您可以使用na strings论证中read csv r
  • R 和系统调用

    我过去曾使用 R 对命令行进行非常基本的调用 例子可以找到here https stackoverflow com questions 3284301 command line in r code 这一次 我希望模仿这段从 Windows
  • 单击 hPlot 图表中闪亮的数据点时打印组名称

    我有一个闪亮的应用程序 它使用 rCharts 中的 highcharts 库显示一些图表 在某些情况下 我在单个图表上有多个图表 这些图表是使用 hPlot 中的组选项创建的 我希望在单击图表时打印单个数据点的所有参数 x y 和组值 我
  • 如何根据另一列的条件语句将因子列添加到数据框?

    我有一个数据框 我需要根据条件语句添加一个因子列 这里是data https www dropbox com s hujiacus8ek5o5z MoroccoCGE CC Stats csv Code morstats agri f lt
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 如何检查向量是否是单个 NA 值,没有长度警告且没有抑制

    我有一个功能NA作为默认值 但如果没有NA应该是一个不限于大小 1 的字符向量 我有一个检查来验证这些 但是is na当向量是字符向量时产生标准警告length大于1 so function lt function x NA if is n
  • 将 SAS sas7bdat 数据读入 R

    R 有哪些选项可以读取本机 SAS 格式的文件 sas7bdat 进入R The NCES 共同核心 https nces ed gov ccd pubschuniv asp例如 包含以此格式保存的大量数据文件存储库 为了具体起见 让我们集
  • 计算网格中物种的出现次数

    我有大约500 000点R美国各地候鸟物种的出现数据 我试图在这些点上覆盖网格 然后计算每个网格中出现的次数 统计完计数后 我想将它们引用到网格单元 ID 在 R 中 我使用了over 函数只获取范围图中的点 这是一个形状文件 Read i
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • 如何在 Shiny 应用程序中访问/打印/跟踪当前选项卡选择?

    我正在一个闪亮的应用程序中工作 我希望能够访问用户在会话中当前所在选项卡上的信息 我有一个观察事件 用于侦听要单击的特定按钮 简而言之 我想存储 打印用户单击此按钮时所在的当前选项卡 单击此按钮后 选项卡将更改为带有 updateTabIt
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • 如何修改反应链以便最后修改的对象控制其他链接的对象?

    新注释 1 最终解决的代码发布在最底部 反映了 ismirsehregal 于 2021 年 12 月 3 日的解决方案 以及一些标记为 ADDED 和 MODIFIED 的小调整 ADD 是为了解决我在矩阵 2 添加值后从矩阵 1 中删除
  • 闪亮的仪表板侧边栏中的可折叠菜单项

    我的侧边栏中有两个菜单项 目前 如果我单击任何菜单项 则会显示所有菜单项的选项卡项 我想让它可折叠 如果我单击多个名称菜单 单个分析应该折叠 如果我单击单个分析 多个分析应该折叠 目前的设计是 相同的可重现代码是 library shiny
  • 如何使用 Rrank() 函数创建新的ties.method? [复制]

    这个问题在这里已经有答案了 我试图按人口和日期排序这个数据框 所以我使用order and rank 功能 gt df lt data frame idgeoville c 5 8 4 3 4 5 8 8 date c rep 1950 4
  • “条件长度 > 1 并且仅使用第一个元素”错误

    我对 f 语句有疑问 因为它返回给我以下错误消息 条件长度 gt 1 并且仅使用第一个元素 我有一个名为 data summary 的数据框 我想创建两个新变量vol up and vol down取决于我的数据框的其他变量 这是我的脚本代
  • 当我添加形状时,分组哑铃图变得不稳定

    我有以下数据显示白人与黑人在各个领域的一致性百分比 我想创建一个分组哑铃图 其中国家值和州值彼此相邻 以便于比较 Domain c A B C D E F G A B C D E F G A B C D E F G A B C D E F
  • 将 r 中的一列从出生日期更改为年龄

    我是第一次使用 data table 我的表中有大约 400 000 个年龄的列 我需要将它们从出生日期转换为年龄 做这个的最好方式是什么 我一直在思考这个问题 到目前为止对这两个答案都不满意 我喜欢用lubridate 就像 KFB 所做

随机推荐

  • 如何更改 IPV6 地址的字节顺序(从网络到主机,反之亦然)?

    我知道ntoh s l and hton s l 适用于 2 和 4 字节的整数 现在 我面临着转换 16 个字节长的 IPv6 地址的问题 是否有用于此目的的现成函数 TIA Jir 我不确定ntoh and hton与 IPv6 相关
  • 为什么我不能在 Konva.Shape.fillPatternImage(imageObj) 中使用 Konva.Image()?

    以下是来自的示例Konvajs http konvajs github io docs shapes Image html加载图像的库 var imageObj new Image imageObj onload function var
  • Mongoose 模式要求数组可以为空

    我有这个架构 var StuffSchema new mongoose Schema id type String required true unique true name type String required true mongo
  • 构建 Java EE 6 项目时出现 FilerException

    我在 Netbeans 7 中有一个 Java EE 6 项目 当我在 IDE 中编译并启动它时 该项目运行良好 但是 当我清理和构建项目时 我得到了 java lang RuntimeException javax annotation
  • 如何提高@patch和MagicMock语句的可读性和可维护性(避免长名称和字符串标识)?

    在我的测试代码中 我有很多样板表达式 Magic return 我还有很长的字符串来标识要模拟的函数的路径 重构期间不会自动替换字符串 我更愿意直接使用导入的函数 示例代码 from mock import patch MagicMock
  • 如何在远程存储库上运行 hg recovery 命令

    在 teamcity 中运行构建时出现以下错误 Failed to collect changes error C Program Files TortoiseHg hg exe config ui interactive False pu
  • 在 cakephp 中分配布局

    我们可以在该特定控制器中为整个控制器定义一个布局吗 我之前已经在应用程序控制器的过滤器之前用于此目的 但它不再解决它 所以我需要在控制器中应该有一些适用于的布局定义该控制器的所有操作 Regards use it 在你的行动中 this g
  • JavaScript - 对象字面量的优点

    我读过 我应该使用对象文字 而不是简单地编写一堆函数 对象字面量有什么优点 有例子吗 正如 Russ Cam 所说 您可以避免污染全局命名空间 这在当今组合来自多个位置 TinyMCE 等 的脚本时非常重要 正如 Alex Sexton 所
  • 如何使用 WebApplicationFactory 覆盖 Autofac 容器中的服务

    我正在使用 WebApplicationFactory 编写一些集成测试 我使用 Autofac 作为我的依赖解析器 在我的测试中 我试图覆盖其中一项注册 以便我可以模拟其中一项依赖项 使用aspnetcore默认的ConfigureSer
  • 如何将html5画布保存到服务器

    我将一些图像加载到我的画布上 然后在加载后我想单击一个按钮将该画布图像保存到我的服务器上 我可以看到脚本工作正常 直到它到达 toDataURL 部分并且我的函数停止执行 我究竟做错了什么 这是我的代码
  • Android View 背景意外变化

    我正在构建一个具有大量屏幕的应用程序 大多数屏幕的顶部都有一个带有背景颜色的视图 我经常使用 view setBackgroundColor color 更改颜色 奇怪的事情来了 有时在设置一个视图的颜色后 例如 f14fb7 在应用程序中
  • 将阿拉伯数字转换为英语

    我正在寻找一种将阿拉伯数字字符串 转换为英语的方法 数字字符串 0123456789 Private Sub Button1 Click ByVal sender As System Object ByVal e As System Eve
  • 如何将多个局部变量传递给嵌套部分

    这应该是非常简单且有据可查的 我已经这样做了好几次了 尽管有些事情仍然让我很烦恼 我有一个调用嵌套部分的部分结构 在某个时刻一render调用需要将额外的变量传递给部分 尽管部分的渲染失败并显示 undefined local variab
  • Swing 菜单 Java 7 mac osx

    我一直在 mac os x 上测试我的 Swing 应用程序 它在小程序上运行 当我在浏览器中运行此小程序时 我注意到 JMenus JMenuItems 上的鼠标悬停无法正常工作 这是一个重现该问题的小程序 package com mac
  • 如何在 Sublime Text 中使用控制台

    我正在使用 Sublime Text 2 来编写程序 并希望在其中运行控制台来编译和运行它们 有没有办法在 Sublime Text 2 中嵌入控制台命令行 已经在那里了吗 我同时使用 Windows 和 Linux 我想你可以尝试创建一个
  • 推送事件不会触发推送路径上的工作流程

    我目前正在测试 GitHub Actions 工作流程这个存储库 https github com GuillaumeFalourd poc github actions 我正在尝试使用这个工作流程 https github com Gui
  • 禁止 (#403) - 你不能执行此操作 [Yii2]

    我尝试添加菜单map在后端 我用yii2 advanced 这是我的 控制器 代码 public function actionMap return this gt render map 但是 当我尝试使用此网址访问它时http local
  • opencv中如何根据深度颜色分割连通区域

    I have a picture like which i need to segment the picture into 8 blocks 我尝试过这种阈值方法 img gray cv2 imread input file cv2 IM
  • 如何获得欧米茄(n)

    我有公式 a n n a n 1 1 a 0 0 如果没有主定理 我怎样才能从中得到 Omega Theta 或 O 表示法 或者有人有一个很好的网站来理解解释 马斯特定理甚至不适用 所以不能使用它并不是太大的限制 此处有效的方法是猜测上限
  • 在 R 中:计算精确率/召回率曲线下的面积 (AUPR)?

    假设我有两个矩阵 A代表标签矩阵 B代表A对应的预测概率矩阵 现在我想根据矩阵A和B计算AUPR 精确率 召回率曲线下的面积 对于常见的AUC Area Under Precision Recall Curve ROC Curve R中有很