为什么我加载用 gbm.step 计算的 gbm 后不能使用“预测”?

问题描述 投票:0回答:1

我正在使用函数

gbm.step
:

创建一个提升回归树
M <- gbm.step(data = DF, 
              gbm.x = c("X1","X2","X3","X4","X5","X6"),
              gbm.y = "PresAbs", 
              family ="bernoulli",
              tree.complexity = 3, learning.rate = 0.01, bag.fraction = 0.6,
              plot.main = FALSE, verbose = FALSE) 

模型运行良好,一旦运行,我就可以对测试数据集进行预测,以使用以下方法验证我的输出:

TestDF$pred <- predict(M, TestDF, n.trees=M$gbm.call$best.trees, type="response")

但是,我也想保存我的模型,以便我可以返回它并做出更多预测。该模型相当大(R studio 说它是一个“大型 gbm”文件,有 41 个元素和 73MB),我使用

saveRDS
:

保存它
saveRDS(M, "Mymodel.rds")

rds 文件很大(237 MB)。我可以在新的 R studio 会话中很好地加载它(使用

readRDS()
),但是当我尝试进行预测时(使用与上面相同的
predict()
函数),我收到以下消息:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "gbm"

这对我来说很奇怪,因为我做的唯一不同的事情是加载模型而不是运行它。我希望能够避免每次使用它时都重新运行它,因为计算需要约 2 小时。您是否知道可能导致问题的原因/解决方案是什么?

非常感谢您的帮助!

r loading predict gbm dismo
1个回答
0
投票

我找到了解决问题的方法:我需要加载包“gbm”。不知怎的,我在使用函数

gbm.step
后不必加载它(这个函数可能会自己加载它)。希望这可以帮别人省去一些麻烦!

© www.soinside.com 2019 - 2024. All rights reserved.