Я создал свою модель xgboost. Он работал так:
my_model <- caret::train( ... )
В результате я получил этот объект:
> class(my_model)
[1] "train" "train.formula"
В моей глобальной среде я вижу описание "my_model": печать экрана среды
Прежде всего - модель работает нормально, с ней все в порядке. Также я могу сохранить эту модель как объект .RDA или .RDS, и загрузка работает нормально. Но для моего коллеги, работающего с данными, мне нужно сохранить его в каком-то конкретном c двоичном формате - * .model.
Так что, когда я пытаюсь использовать функцию xgb.save непосредственно в 'my_model ', очевидно, он не работает, потому что его класс! =' xgb.Booster '. Я прогуглил его и прочитал, что мне нужно сохранить my_model $ finalModel. Выглядит хорошо - класс правильный:
> class(my_model$finalModel)
[1] "xgb.Booster"
Я могу сохранить модель вот так. Но его размер файла действительно маленький, и когда мой коллега пытается загрузить его в свою систему Spark, он выглядит как пустой файл. И оно действительно слишком маленькое:
> object_size(my_model$finalModel)
447 kB
Так что «my_model $ finalModel» - это лишь малая часть «my_model», которая не работает для меня.
Вопрос в том, как я могу сохранить его в формате * .model? Что я делаю не так?