根据 R 中的交叉验证(训练)数据绘制 ROC 曲线

2023-12-27

我想知道是否有一种方法可以从使用 SVM-RFE 模型生成的交叉验证数据中绘制平均 ROC 曲线caret包裹。

我的结果是:

Recursive feature selection

Outer resampling method: Cross-Validated (10 fold, repeated 5 times) 

Resampling performance over subset size:

 Variables    ROC   Sens   Spec Accuracy  Kappa  ROCSD SensSD SpecSD AccuracySD KappaSD Selected
         1 0.6911 0.0000 1.0000   0.5900 0.0000 0.2186 0.0000 0.0000     0.0303  0.0000         
         2 0.7600 0.3700 0.8067   0.6280 0.1807 0.1883 0.3182 0.2139     0.1464  0.3295         
         3 0.7267 0.4233 0.8667   0.6873 0.3012 0.2020 0.3216 0.1905     0.1516  0.3447         
         4 0.6989 0.3867 0.8600   0.6680 0.2551 0.2130 0.3184 0.1793     0.1458  0.3336         
         5 0.7000 0.3367 0.8600   0.6473 0.2006 0.2073 0.3359 0.1793     0.1588  0.3672         
         6 0.7167 0.3833 0.8200   0.6427 0.2105 0.1909 0.3338 0.2539     0.1682  0.3639         
         7 0.7122 0.3767 0.8333   0.6487 0.2169 0.1784 0.3226 0.2048     0.1642  0.3702         
         8 0.7144 0.4233 0.7933   0.6440 0.2218 0.2017 0.3454 0.2599     0.1766  0.3770         
         9 0.8356 0.6533 0.7867   0.7300 0.4363 0.1706 0.3415 0.2498     0.1997  0.4209         
        10 0.8811 0.6867 0.8200   0.7647 0.5065 0.1650 0.3134 0.2152     0.1949  0.4053        *
        11 0.8700 0.6933 0.8133   0.7627 0.5046 0.1697 0.3183 0.2147     0.1971  0.4091         
        12 0.8678 0.6967 0.7733   0.7407 0.4682 0.1579 0.3153 0.2559     

...
The top 5 variables (out of 10):
   SumAverage_GLCM_R1SC4NG2, Variance_GLCM_R1SC4NG2, HGZE_GLSZM_R1SC4NG2, LGZE_GLSZM_R1SC4NG2, SZLGE_GLSZM_R1SC4NG2

我尝试过这里提到的解决方案:来自插入符号中的训练数据的 ROC 曲线 https://stackoverflow.com/questions/31138751/roc-curve-from-training-data-in-caret

optSize <- svmRFE_NG2$optsize
selectedIndices <- svmRFE_NG2$pred$Variables == optSize
plot.roc(svmRFE_NG2$pred$obs[selectedIndices],
         svmRFE_NG2$pred$LUNG[selectedIndices])

但这个解决方案似乎不起作用(得到的AUC值有很大不同)。正如前面的答案中提到的,我已将训练过程的结果分成 50 个交叉验证集,但我不知道下一步该怎么做。

resamples<-split(svmRFE_NG2$pred,svmRFE_NG2$pred$Variables)
resamplesFOLD<-split(resamples[[optSize]],resamples[[optSize]]$Resample)

有任何想法吗?


正如您已经所做的那样,您可以 a) 启用savePredictions = T in the trainControl的参数caret::train,然后,b) 从训练好的模型对象中,使用pred变量 - 包含所有分区和重新采样的所有预测 - 来计算您想要查看的 ROC 曲线。您现在有多个 ROC 选项,例如:

你可以看看对所有分区的所有预测并立即重新采样:

plot(roc(predictor = modelObject$pred$CLASSNAME, response = modelObject$pred$obs))

或者你可以重新做一遍单独分区和/或重新采样(这就是您上面尝试过的)。以下示例计算每个分区的 ROC 曲线and重新采样,因此 10 个分区和 5 次重复将产生 50 条 ROC 曲线:

library(plyr)
l_ply(split(modelObject$pred, modelObject$pred$Resample), function(d) {
    plot(roc(predictor = d$CLASSNAME, response = d$obs))
})

根据您的数据和模型,后者will给出结果 ROC 曲线和 AUC 值的一定方差。您可以看到相同的方差AUC and SD values caret针对您的各个分区和重新采样进行计算,因此这是根据您的数据和模型得出的结果,并且是正确的。

顺便说一句:我正在使用pROC::roc函数用于计算上面的示例,但您可以在此处使用任何合适的函数。并且,当使用caret::train无论模型类型如何,获得 ROC 始终相同。

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

根据 R 中的交叉验证(训练)数据绘制 ROC 曲线 的相关文章

  • R data.table 1.9.2 关于 setkey 的问题

    这似乎是 1 8 10 后引入的一个错误 与包含列表的 DT 的 setkey 相关 运行下面两个代码来查看问题 library data table dtl lt list dtl 1 lt data table scenario 1 p
  • 如何从 R 数据框中提取关键字

    我是 R 中文本挖掘的新手 我想从数据框的列中删除停用词 即提取关键字 并将这些关键字放入新列中 我尝试制作一个语料库 但它对我没有帮助 df C3是我目前拥有的 我想添加栏目df C4 但我无法让它工作 df lt structure l
  • R 编程常用工具

    如果已经以不同的方式问过这个问题 我深表歉意 但我找不到任何达到我想要的东西 我真的是从其他软件包 SPSS 开始接触 R 的 当我了解真正可以做什么时 我意识到我还需要其他 工具 这让我想到了我的问题 您有哪些用于开发 R 代码的设置 我
  • 在 igraph 中为社区分配颜色

    我在 igraph 中使用 fastgreedy community 检测算法在 R 中生成社区 代码返回 12 个社区 但是在绘图时很难识别它们 因为它返回的图的颜色数量有限 我怎样才能用十二种不同的颜色绘制这个图表 l2 lt layo
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 如何绘制堆积比例图?

    我有一个数据框 x lt data frame id letters 1 3 val0 1 3 val1 4 6 val2 7 9 id val0 val1 val2 1 a 1 4 7 2 b 2 5 8 3 c 3 6 9 我想绘制一个
  • 不同 R/lme4 版本的单一拟合结果不匹配

    我试图将 R 版本 3 5 3 lme4 1 1 18 1 的随机效应估计与 R 版本 4 1 1 lme4 1 1 27 1 相匹配 然而 当存在奇异拟合时 这两个版本之间的随机效应存在微小差异 我对奇点警告很满意 但令人费解的是不同版本
  • 如何在ubuntu的conda环境中更改Rstudio中的R版本

    我在基本系统中安装了 R 4 3 和 Rstudio 在 conda 环境中安装了旧版本的 R 4 2 3 命令which R返回环境中安装的 R 的目录 home 用户 miniconda3 envs anndata2ri pip bin
  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • rpart“as.character(x) 中的错误:无法强制类型 'builtin' 为类型 'character' 的向量”消息是什么意思?

    我一直在用头撞rpart几天了 尝试为我拥有的这个数据集制作分类树 我认为现在是时候询问生命线了 我确信这是我没有看到的愚蠢的事情 但这里是我一直在做什么 EuropeWater lt read csv file paste Users a
  • 将字符串列拆分为多个虚拟变量

    作为 R 中 data table 包的相对缺乏经验的用户 我一直在尝试将一个文本列处理为大量指示符列 虚拟变量 每列中的 1 表示特定的子字符串是在字符串列中找到 例如我想处理这个 ID String 1 a b 2 b c 3 c 进入
  • 为什么数据帧上的 is.vector 不返回 TRUE?

    tl dr R 中的向量到底是什么 长版 R 中很多东西都是向量 例如 数字是长度为 1 的数值向量 is vector 1 1 TRUE 列表也是一个向量 is vector list 1 1 TRUE 好的 所以列表是一个向量 显然 数
  • 使用 R 下载压缩数据文件、提取和导入数据

    EZGraphs 在 Twitter 上写道 很多在线 csv 都被压缩了 有没有办法下载 解压缩存档并使用 R 将数据加载到 data frame Rstats 我今天也尝试这样做 但最终只是手动下载 zip 文件 我尝试过类似的东西 f
  • 列出 R 数据文件的内容而不加载

    我有时用print load myDataFile RData 当我加载数据文件时列出它的内容 有没有办法列出内容而不加载数据文件中包含的对象 我认为如果不加载对象就无法做到这一点 解决方案可能是使用包装器将 R 对象保存到save 该函数
  • purrr::可能函数可能无法与map2_chr函数一起使用

    我怀疑这是 purrr 包中的错误 但想先在 StackOverflow 中检查我的逻辑 在我看来 possibly功能在内部不起作用map2 chr功能 我正在使用 purrr 版本 0 2 5 考虑这个例子 library dplyr
  • 访问或解析 R 中的 summary() 中的元素

    我运行以下 R 命令来进行 Dunnett 测试并获取摘要 如何访问下面线性假设的每一行 这是摘要输出的一部分 基本上我不知道摘要的结构 我尝试使用名称 但它似乎不起作用 因为我没有看到任何命名属性来提供这一点 library multco
  • 警告消息 - 来自 dummies 包的 dummy

    我正在使用 dummies 包为分类变量生成虚拟变量 其中一些变量具有两个以上类别 testdf lt data frame A as factor c 1 2 2 3 3 1 B c A B A B C C C c D D E D D E
  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI

随机推荐