首页 > 解决方案 > R:用carrier::crate包装部分环境以预测新数据

问题描述

我想部署一个使用 mlr 创建的机器学习模型。因此,我尝试包装学习模型的预测器应用 carrier::crate() 函数:

predictor <- carrier::crate(
                  function(data){
                      predict(object = model,
                              newdata = data)},
                   model = model)

一般来说,这似乎有效,但是当我在没有安装 mlr 的目标环境上执行代码时,我收到以下错误:

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

经过一番调查,我发现在使用 mlr 的学习环境中,predict() 类是

class(predict)
# [1] "nonstandardGenericFunction"
# attr(,"package")
# [1] "methods"

而在没有 mlr 的预测环境中,它是

class(predictor)
# [1] "function"

所以 mlr 似乎以我还不理解的方式改变了预测功能。

有没有办法将“mlradj​​usted”预测功能从当前环境带到另一个环境?最后,这样的事情(不起作用)会帮助我

    predictor <- carrier::crate(
                  function(data){
                        my_predict(data) -> p
                        return(p)},
                   model = model,
                   my_predict(data) = predict(object = model, newdata = data))

标签: rdeploymentpredictmlr

解决方案


推荐阅读