Развертывание модели XGBoost, созданной Amazon sagemaker, в среде R
Я пытаюсь развернуть XGBoost
модель, которая обучается с помощью Amazon Sagemaker, в R
среда. Модель, созданная Sagemaker, сохраняется как Python
Рассол объекта
С использованием {reticulate}
пакет в R, я могу импортировать модель в R. Тем не менее, использование модели локально в R дает очень разные прогнозы по сравнению с использованием модели непосредственно на Amazon sagemaker
на том же наборе данных тестирования. Я подозреваю, что могут быть проблемы с преобразованием XGBoost
модель, хранящаяся в python, в модель, используемую в 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" локально, а затем использую R для ее считывания, заключается в том, что я хочу использовать нативный xgboost в R для прогнозирования, а не полагаться на сетку для прогнозов. Однако прогнозы явно не верны.
1 ответ
Проблема в том, что в Python xgboost требует np.array в качестве входных данных. Таким образом, вы должны преобразовать ввод с помощью функции Dmatrix.
Что-то вроде этого:
dtrain <- xgb.DMatrix(train$data, label=train$label)