【问题标题】:Deploy an Amazon sagemaker-generated XGBoost model in R environment在 R 环境中部署 Amazon sagemaker 生成的 XGBoost 模型
【发布时间】:2019-06-11 05:30:48
【问题描述】:

我正在尝试在 R 环境中部署使用 Amazon sagemaker 训练的 XGBoost 模型。 sagemaker 生成的模型存储为 Python pickle 对象。

使用 R 中的 {reticulate} 包,我可以将模型导入 R。但是,与直接在 Amazon sagemaker 上使用模型相比,在 R 中本地使用模型给出了非常不同的预测,同样测试数据集。我怀疑将 python 存储的XGBoost 模型转换为可在 R 中使用的模型可能会出现问题。这是我用来进行转换的相关代码:

library(reticulate)
library(xgboost)

model <- py_load_object("sagemaker-model")
# save the model locally, to be reload into R
model$save_model("local-model")
model_R = xgb.load("local-model")

我首先将“sagemaker-model”保存在本地,然后使用 R 读取它的原因是因为我想在 R 中使用原生 xgboost 进行预测,而不是依赖 reticulate 进行预测。但是,预测显然不正确。

【问题讨论】:

    标签: python r xgboost amazon-sagemaker


    【解决方案1】:

    问题在于,在 Python 中,xgboost 需要 np.array 作为输入。所以你必须用 Dmatrix 函数转换输入。

    类似这样的:

    dtrain <- xgb.DMatrix(train$data, label=train$label)
    

    【讨论】:

    • 谢谢!我想知道是否有一种方法可以将基于 Python 的模型直接“翻译”为 R 可识别和可用的模型?我希望能够在 R 中本地完成所有操作(即生成 DMatrix、加载模型、部署模型)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多