R 中使用插入符号进行分类的预测(模型)和预测(模型$ FinalModel)之间的区别

2024-03-16

有什么区别

predict(rf, newdata=testSet)

and

predict(rf$finalModel, newdata=testSet) 

我训练模型preProcess=c("center", "scale")

tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
rf <- train(y~., data=trainingSet, method="rf", trControl=tc, preProc=c("center", "scale"))

当我在居中且缩放的测试集上运行它时,我收到 0 个真阳性

testSetCS <- testSet
xTrans <- preProcess(testSetCS)
testSetCS<- predict(xTrans, testSet)
testSet$Prediction <- predict(rf, newdata=testSet)
testSetCS$Prediction <- predict(rf, newdata=testSetCS)

但是当我在未缩放的测试集上运行它时,会收到一些真正的积极结果。 我必须使用 rf$finalModel 来接收关于居中和缩放的测试集以及未缩放的 rf 对象的一些真实的积极信息......我缺少什么?


edit

tests:

tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
RF <-  train(Y~., data= trainingSet, method="rf", trControl=tc) #normal trainingData
RF.CS <- train(Y~., data= trainingSet, method="rf", trControl=tc, preProc=c("center", "scale")) #scaled and centered trainingData

在正常测试集上:

RF predicts reasonable              (Sensitivity= 0.33, Specificity=0.97)
RF$finalModel predicts bad       (Sensitivity= 0.74, Specificity=0.36)
RF.CS predicts reasonable           (Sensitivity= 0.31, Specificity=0.97)
RF.CS$finalModel same results like RF.CS    (Sensitivity= 0.31, Specificity=0.97)

在居中和缩放的 testSetCS 上:

RF predicts very bad                (Sensitivity= 0.00, Specificity=1.00)
RF$finalModel predicts reasonable       (Sensitivity= 0.33, Specificity=0.98)
RF.CS predicts like RF              (Sensitivity= 0.00, Specificity=1.00)
RF.CS$finalModel predicts like RF       (Sensitivity= 0.00, Specificity=1.00)

所以看起来 $finalModel 需要相同格式的训练集和测试集,而训练对象只接受非中心和未缩放的数据,无论选择的预处理参数是什么?

预测代码(其中testSet是正常数据,testSetCS是居中和缩放的):

testSet$Prediction <- predict(RF, newdata=testSet)
testSet$PredictionFM <- predict(RF$finalModel, newdata=testSet)
testSet$PredictionCS <- predict(RF.CS, newdata=testSet)
testSet$PredictionCSFM <- predict(RF.CS$finalModel, newdata=testSet)

testSetCS$Prediction <- predict(RF, newdata=testSetCS)
testSetCS$PredictionFM <- predict(RF$finalModel, newdata=testSetCS)
testSetCS$PredictionCS <- predict(RF.CS, newdata=testSetCS)
testSetCS$PredictionCSFM <- predict(RF.CS$finalModel, newdata=testSetCS)

Frank,

这与您的其他问题非常相似交叉验证 https://stats.stackexchange.com/questions/81609/issue-on-prediction-with-finalmodel-of-randomforest-in-r-using-the-caret-package/81667#81667.

你真的需要

1) 显示每个结果的准确预测代码

2)给我们一个可重现的例子。

与正常情况下testSet, RF.CS and RF.CS$finalModel不应该给您相同的结果,我们应该能够重现该结果。另外,您的代码中存在语法错误,因此它不可能完全是您执行的内容。

最后,我不太确定你为什么要使用finalModel根本没有对象。要点是train是处理细节,并以这种方式(这是您的选择)做事绕过通常应用的完整代码集。

这是一个可重现的示例:

 library(mlbench)
 data(Sonar)

 set.seed(1)
 inTrain <- createDataPartition(Sonar$Class)
 training <- Sonar[inTrain[[1]], ]
 testing <- Sonar[-inTrain[[1]], ]

 pp <- preProcess(training[,-ncol(Sonar)])
 training2 <- predict(pp, training[,-ncol(Sonar)])
 training2$Class <- training$Class
 testing2 <- predict(pp, testing[,-ncol(Sonar)])
 testing2$Class <- testing2$Class

 tc <- trainControl("repeatedcv", 
                    number=10, 
                    repeats=10, 
                    classProbs=TRUE, 
                    savePred=T)
 set.seed(2)
 RF <-  train(Class~., data= training, 
              method="rf", 
              trControl=tc)
 #normal trainingData
 set.seed(2)
 RF.CS <- train(Class~., data= training, 
                method="rf", 
                trControl=tc, 
                preProc=c("center", "scale")) 
 #scaled and centered trainingData

以下是一些结果:

 > ## These should not be the same
 > all.equal(predict(RF, testing,  type = "prob")[,1],
 +           predict(RF, testing2, type = "prob")[,1])
 [1] "Mean relative difference: 0.4067554"
 > 
 > ## Nor should these
 > all.equal(predict(RF.CS, testing,  type = "prob")[,1],
 +           predict(RF.CS, testing2, type = "prob")[,1])
 [1] "Mean relative difference: 0.3924037"
 > 
 > all.equal(predict(RF.CS,            testing, type = "prob")[,1],
 +           predict(RF.CS$finalModel, testing, type = "prob")[,1])
 [1] "names for current but not for target"
 [2] "Mean relative difference: 0.7452435" 
 >
 > ## These should be and are close (just based on the 
 > ## random sampling used in the final RF fits)
 > all.equal(predict(RF,    testing, type = "prob")[,1],
 +           predict(RF.CS, testing, type = "prob")[,1])
 [1] "Mean relative difference: 0.04198887"

Max

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

R 中使用插入符号进行分类的预测(模型)和预测(模型$ FinalModel)之间的区别 的相关文章

  • geom_密度匹配geom_histogram binwitdh

    我想在 ggplot2 中的分布条形图上添加一条线以显示平均分布 但遇到了麻烦 像这样的 ggplot 调用 ggplot x aes date received geom histogram aes y count binwidth 30
  • 用于更改向量中元素顺序的闪亮小部件

    在很多网站上 您都有一个拖放界面来更改列表中元素的顺序 我正在寻找类似的东西闪亮 我希望用户能够拖放列表中的元素 通过更改顺序来更改优先级 现在我有一个滥用的解决方案selectizeInput 这是可行的 但当选择列表变得更大时 它很快就
  • 以计数矩阵作为响应的多项式

    根据帮助multinom 包裹nnet 响应应该是一个因子或具有 K 列的矩阵 它将被解释为每个 K 类的计数 我尝试在第二种情况下使用此函数 但出现错误 这是我所做的示例代码 response lt matrix round runif
  • 如何转置 R markdown 文档中的表格?

    假设我打印一个名为summary table的数据框 如下所示 summary table data frame a c 1 2 3 b c 11 12 13 c c 21 22 23 d c 31 32 33 e c 41 42 43 f
  • 为格子中的每个面板添加不同的独特标签

    很清楚如何在格子中标记面板 https stackoverflow com questions 8508269 how to label panels in lattice using panel text or ltext论据 但是 如果
  • 我可以在 R 中并行读取 1 个大 CSV 文件吗? [复制]

    这个问题在这里已经有答案了 我有一个很大的 csv 文件 需要很长时间才能阅读 我可以使用 parallel 或相关的包在 R 中并行读取此内容吗 我尝试过使用 mclapply 但它不起作用 根据OP的评论 fread来自data tab
  • R 中的 Mapdeck 包 - add_grid 似乎未渲染任何内容

    Problem The add gridR 中的函数mapdeck包很精彩 然而 遵循CRAN 文档 https cran r project org web packages mapdeck mapdeck pdf 我似乎无法获得任何数据
  • 如何使用 tidyr 将向量中字符串中的每个字符分隔到一列中

    我想将向量中的每个字符串分成列 但我做不到 library tidyr library dplyr df lt data frame x c abe bas dds eer df gt separate x c A B C sep 1 我想
  • 计算数据框中每一行的 R 条件运行总和

    我想创建一个等于 data Rating 的运行总和的列 假设第 3 列和第 4 列中有两个条件成立 特别是 data Year 换句话说 这应该计算直到上一年为止每个 id 的评分累积总和 它应该对数据框中的每一行 大约 50 000 行
  • R 中的 huxtable 即使有选项也默认为科学记数法(scipen=999)

    我试图生成像样的桌子 并在过去的一周尝试了很多软件包 我的头在游泳 今天早上开始使用 package huxtable 并试图摆脱科学记数法 x lt mtcars 1 5 1 2 x mpg lt x mpg 10000000 get s
  • linux下无法安装Cairo包

    我在本地下载该软件包并尝试安装它 但出现此错误 R CMD INSTALL l usr local lib64 R library Cairo 1 5 1 tar gz 我得到他的错误 checking for PNG support in
  • 提取所有列组中共有的元素

    我有一个 R 数据集 x 如下 ID Month 1 1 Jan 2 3 Jan 3 4 Jan 4 6 Jan 5 6 Jan 6 9 Jan 7 2 Feb 8 4 Feb 9 6 Feb 10 8 Feb 11 9 Feb 12 10
  • R tm 包创建 N 个最常见术语的矩阵

    我有一个termDocumentMatrix使用创建的tmR 中的包 我正在尝试创建一个包含 50 个最常出现的术语的矩阵 数据框 当我尝试转换为矩阵时 出现此错误 gt ap m lt as matrix mydata dtm Error
  • R:计算自上次出现某个值以来的累积总和和计数

    给定简化数据 set seed 13 user id rep 1 2 each 10 order id sample 1 20 replace FALSE cost round runif 20 1 5 75 1 category samp
  • 枚举所有可能的二元组星座

    我正在寻找一种方法来枚举 n 个成员的所有可能的两人组星座 例如 对于 n 4 个成员 以下 3 个独特的组星座是可能的 请注意 组内成员的顺序和组顺序都不重要 1 2 3 4 1 3 2 4 1 4 2 3 例如 对于 n 6 个成员 可
  • R中一张图中的多个条形图

    我是 R 初学者 我需要创建一个像这样的图表 https i stack imgur com az56z jpg https i stack imgur com az56z jpg 我不知道如何生成整个数据集 基本思想是某个外显子 ID 会
  • 如何在R中的2行之间交换多个值

    我有一个大小为 10x100 的矩阵 如何交换前 30 列中第 1 行和第 2 行之间的值 我们可以反转前两行的行索引以及通过采取序列创建的列索引rounded 30 总列数用于交换行中的值 colS lt seq round ncol m
  • R(或替代方案?)中的高(或非常高)阶多项式回归

    我想对 R 中的一组数据进行 非常 高阶回归拟合 但是poly 函数的阶数极限为 25 对于此应用程序 我需要的订单范围为 100 到 120 model lt lm noisy y poly q 50 Error in poly q 50
  • 矩阵中两个字符串的最大 nchar

    我想找到更好的方法来找到我正在相互比较的两个字符串的更大的 nchar 假设我有字符串句子匹配data frame 和我需要创建一个 max nchar string1 nchar string2 矩阵 但没有 for 循环 这是非常慢的方
  • 根据条件计算平均值

    下面是我的数据框 Row ID A B 1 0 0 2 0 0 3 0 0 4 0 1 5 0 1 6 0 1 7 62 75 0 8 100 0 9 100 0 10 100 1 11 100 1 12 100 1 13 100 1 14

随机推荐

  • 如何将 read_html 的输出保存和读取为 RDS 文件?

    对象可以像这样保存和读取 Save as file saveRDS iris mydata RDS Read back in readRDS mydata RDS 但这似乎不适用于用xml2 read html Example librar
  • 一个JVM下的多个进程

    我们可以在一个 JVM 中运行多个进程吗 每个进程都应该有自己的内存配额吗 我的目标是在新的 http 请求进入时启动新进程 并为该进程分配单独的内存 以便每个用户请求都有自己的内存配额 如果内存配额已满 则不会打扰其他用户请求 我怎样才能
  • android: Parse.com Parseobject classnotfound 错误

    我在 Android 应用程序中使用 Parse com 的库 但收到以下错误 05 26 18 43 31 838 E AndroidRuntime 4759 致命异常 主要 05 26 18 43 31 838 E AndroidRun
  • 反应多个过滤器下拉菜单

    我有 React 应用程序 您可以在其中根据几个不同的属性过滤列表 目前 我可以一次过滤每个类别 但我想一次过滤多个类别 因此当您选择更多过滤器时 列表会变得越来越小 然后 当您清除所有值时 它将返回到原始列表 我怎样才能实现这个目标 de
  • 解析/转换 cookie 为 JSON 格式

    我们有任何 javascript 库或正则表达式来解析 将 cookie 转换为 JSON 格式吗 有些cookie是这样的 cookie referer example com post id 22 bcomID 8075 subretu
  • 替换非渲染(非显示)元素文本中的 ↵ (\n)

    我正在编写一个解析器 从隐藏的 iframe 中获取数据 在文本中我需要替换 n 个字符 空间 我用它来完成这项任务 text replace n gi 但是 它仅适用于可见元素 即没有display none 如果该元素不可见 displ
  • PHP json_decode 返回 null

    我正在努力让它发挥作用 但看不出我哪里出了问题 有人可以帮忙吗 Hint 初始 JSON 存储在 json变量 不验证 Code FIXED
  • 使用 github 操作从 docker build 内的 git repo 安装 PIp

    我正在致力于将通用模块分离到我们 github 组织的专用存储库中 使用 git repo 中的 pip installDockerfile安装组织内部开发的共享模块 RUN pip3 install r requirements txt
  • 无法从 Twilio Studio 创建任务

    在 Twilio Studio 上 我可以收到短信 回复预设回复 但当我尝试在 Flex 中传递 创建任务时 出现错误 REST API 流触发器不支持 SendToFlexWidget 即使我使用的是收入消息触发器 即使使用默认消息流 我
  • 将光标从块或矩形更改为线? [复制]

    这个问题在这里已经有答案了 我的光标是一个闪烁的黑色矩形 我不知道怎么变成这样了 我想把它变回一条闪烁的垂直线 图片 您正处于替换模式 按Insert键盘上的 键切换回插入模式 许多处理文本的应用程序都有这个共同点
  • Android NDK 反编译本机代码的可能性

    是否可以通过 ndk 解码编译并喜欢到 android 的本机代码 是否可以从 apk 重建项目并将其导入 eclipse 或任何其他 IDE 是否可以使用 so如果 java 本机函数声明正确完成 则再次在 apk 文件中重新构建文件以重
  • 有没有办法将 sys.fn_varbintohexstr 结果转回 varbinary?

    有没有function in SQL Server要做到这一点 扭转sys fn varbintohexstr 您需要在动态 SQL 语句中使用十六进制字符串 以便将其解析为 varbinary 下面是如何做到这一点的一个示例 Our or
  • Shenandoah 垃圾收集器负载参考屏障

    对于目睹过发展的人来说这不是什么大秘密Shenandoah一个主要的批评是它采用了GC barriers for 每一个写入和读取 无论是引用还是原始 Shenandoah 2 0声称这不再是问题 可以通过所谓的解决方案负载参考屏障 这是怎
  • 类型错误:字符串索引必须是整数(Python)[重复]

    这个问题在这里已经有答案了 我正在尝试检索 id 值 ad284hdnn 我收到以下错误 TypeError string indices must be integers data response json print data for
  • 当您执行 CPU 不支持的指令时会发生什么?

    如果 CPU 尝试执行使用您的 CPU 不支持的某些指令编译的二进制文件 会发生什么情况 我特别想知道一些在旧处理器上运行的新 AVX 指令 我假设这可以进行测试 并且理论上可以向用户显示一条友好的消息 想必大多数低级库都会代表您检查这一点
  • 使用相同数据透视表的子类的 Hibernate 多对多

    具有此模型架构 Person Student SchoolBoy CollegeStudent 我正在使用 Hibernate 3 6 并且我使用tperson所有类的表 使用鉴别器列 我的映射是这样完成的
  • 如何在 OpenCV 中使用 cv::createButton 原型

    我想了解如何使用 OpenCV 文档中定义的 cv createButton http opencv jp opencv 2svn org cpp highgui qt new functions html cv createbutton
  • 如何让 jq 将参数视为数字而不是字符串?

    怎么做jq将输入参数视为数字而不是字符串 在下面的示例中 CURR INDEX是一个 Bash 变量 它具有我想要提取的数组索引值 jq arg ARG1 CURR INDEX ARG1 patchSets inputfile json 我
  • Android 延迟后播放声音

    我必须在 GUI 事件上播放声音 例如单击按钮等 为此 我从 WebView 调用以下本机代码 MediaPlayer SoundPlayer new MediaPlayer private void playSound String so
  • R 中使用插入符号进行分类的预测(模型)和预测(模型$ FinalModel)之间的区别

    有什么区别 predict rf newdata testSet and predict rf finalModel newdata testSet 我训练模型preProcess c center scale tc lt trainCon