我正在尝试在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)