首先,感谢您在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)发布于 2018-01-08 01:09:24
在我写这篇文章的时候(2018年1月),这仍然是xgboost的一个bug。有关详细信息,请参阅this ticket。
同时,您可以以pojo或mojo文件的形式下载模型
h2o.download_pojo(model, path = "/media/somewhere/tmp")不幸的是,加载回模型并不那么容易,但是您可以使用以下函数通过json将新数据传递给已保存的pojo模型:
h2o.predict_json()但是,新数据必须以json格式提供。
有关详细信息,请参阅this question
https://stackoverflow.com/questions/44848861
复制相似问题