首先感谢在h2o中实现XGBoost!
不幸的是,我无法预测从磁盘加载的h2o xgboost模型(我确信你可以欣赏它真的令人沮丧)。
我正在使用h2o的最新稳定版本,即3.10.5.2&我正在使用R客户端。
我在下面添加了一个示例,可以让您重现问题,
提前致谢
### Start h2o
require(h2o)
local_h2o = h2o.init()
### Source the base data set
data(mtcars)
h2o_mtcars = as.h2o(x = mtcars,destination_frame = 'h2o_mtcars')
### Fit a model to be saved
mdl_to_save = h2o.xgboost(model_id = 'mdl_to_save',y = 1,x = 2:11,training_frame = h2o_mtcars) ##This class doesnt work
#mdl_to_save = h2o.glm(model_id = 'mdl_to_save',y = 1,x = 2:11,training_frame = h2o_mtcars) ##This class works
### Take some reference predictions
ref_preds = h2o.predict(object = mdl_to_save,newdata = h2o_mtcars)
### Save the model to disk
silent = h2o.saveModel(object = mdl_to_save,path = 'INSERT_PATH',force = TRUE)
### Delete the model to make sure there cant be any strange locking issues
h2o.rm(ids = 'mdl_to_save')
### Load it back up
loaded_mdl = h2o.loadModel(path = 'INSERT_PATH/mdl_to_save')
### Score the model
### The h2o.predict statement below is what causes the error: java.lang.NullPointerException
lod_preds = h2o.predict(object = loaded_mdl,newdata = h2o_mtcars)
all.equal(ref_preds,lod_preds)
答案 0 :(得分:0)
在我写这篇文章时(2018年1月),这仍然是xgboost
的错误。有关详细信息,请参阅this ticket。
与此同时,您可以将模型下载为pojo
或mojo
文件
h2o.download_pojo(model, path = "/media/somewhere/tmp")
不幸的是,加载模型并不容易,但您可以通过json
将新数据传递给保存的pojo
模型并使用以下功能:
h2o.predict_json()
但是,新数据必须以json
格式提供。
有关详细信息,请参阅this question