将带有R的Ranger模型装箱以用于MLflow时出现问题



我正在尝试在R中使用MLflow。根据https://www.mlflow.org/docs/latest/models.html#r-功能板条箱,模型需要使用板条箱风味。我的模型使用ranger包中实现的随机森林函数:

model <- ranger::ranger(formula    = model_formula, 
data       = trainset,
importance = "impurity", 
probability=T, 
num.trees  = 500, 
mtry       = 10)

模型本身是有效的,我可以在测试集上进行预测:

test_prediction <- predict(model, testset)

作为下一步,我试着把模型带进板条箱的味道。我遵循中所示的方法https://docs.databricks.com/_static/notebooks/mlflow/mlflow-quick-start-r.html.

predictor <- crate(function(x) predict(model,.x))

然而,当我应用";预测器";在测试集上

predictor(testset)
Error in predict(model, .x) : could not find function "predict"

有人知道如何解决这个问题吗?我必须在板条箱函数中以不同的方式传递预测函数?非常感谢您的帮助;-(

根据我的经验,Databricks快速启动指南是错误的。

根据Carrier文档,在机箱内调用非基函数时,需要使用显式名称空间。由于predict实际上是stats包的一部分,因此需要指定stats::predict。此外,由于您的crate函数依赖于名为model的全局对象,因此还需要将其作为参数传递给crate函数。

你的代码最终会看起来像这样(我无法在你的确切用例中测试它,因为我没有你的数据,但这对我在Databricks中的MLflow有效(:

model <- ranger::ranger(formula    = model_formula, 
data       = trainset,
importance = "impurity", 
probability=T, 
num.trees  = 500, 
mtry       = 10)
predictor <- crate(function(x) {
stats::predict(model,x)
}, model = model)
predictor(testset)

相关内容

  • 没有找到相关文章

最新更新