从远程服务器执行时预测失败

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

我有这个

R
代码:

library(mongolite)

myUnserializationFunc<-function(value){
  return (unserialize(value,refhook = function(chr) list(dummy = 0L)))
}    

url_path = sprintf("mongodb+srv://%s:%s@%s", "someuser", "somepass", "somehost.in.mongodbatlas")

modelCollection<-mongo(collection = "somecollection"
                       ,url = paste0(url_path,"/","somedatabase"))    

modelName<-"modle32"
strConditions=paste0('{"modelName":"',modelName,'"}')
strSelect=paste0('{"object":true,"_id":false}')

mdl<-modelCollection$find(query=strConditions,fields=strSelect)
mdl<-myUnserializationFunc(mdl[[1]][[1]])


predict(mdl,iris)

当我在 Windows 本地计算机中从 RStudio 执行它时,它正在工作:

> predict(mdl,iris)
Using 100 trees...

  [1] 5.066186 4.766941 4.795193 4.910053 5.139620 5.554888 4.922106 4.967152 4.734696
 [10] 4.910053 5.230387 4.967152 4.766941 4.766941 5.139620 5.408491 5.317723 5.111907
 [19] 5.422505 5.276108 5.113549 5.408491 5.139620 5.210461 5.113549 4.857708 5.145256
 [28] 5.156954 4.876385 4.885961 4.910053 5.145256 5.230387 5.139620 4.910053 4.795193
 [37] 5.066186 5.139620 4.766941 4.967152 5.111907 4.651098 4.795193 5.335057 5.554888

但是,当我从远程 CentOS 服务器执行完全相同的脚本时,出现此错误:

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

我也尝试了随机森林,但遇到了同样的错误。

我做错了什么?

r predict
1个回答
0
投票

解决缺失函数所需的步骤从函数名称开始。在这种情况下,您(或其他人)显然将“gbm”类的完整模型对象放入数据库中,然后将其提取到机器和会话中,其中模型构建功能未加载到工作区中。在

predict.gbm
上运行谷歌搜索会出现第一个点击:https://www.rdocumentation.org/packages/gbm/versions/2.1.8.1/topics/predict.gbm。因此,要尝试的第一件事(显然对您来说成功了)是在对该类的对象调用
library(gbm)
之前运行
predict
。将来您可能会考虑使用包含对象类的字符串来命名模型。

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