带有xgboost的R h2o.predict错误 - >显示java.lang.NullPointerException

时间:2017-06-30 14:30:09

标签: r xgboost h2o

首先感谢在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)

1 个答案:

答案 0 :(得分:0)

在我写这篇文章时(2018年1月),这仍然是xgboost的错误。有关详细信息,请参阅this ticket

与此同时,您可以将模型下载为pojomojo文件

h2o.download_pojo(model, path = "/media/somewhere/tmp")

不幸的是,加载模型并不容易,但您可以通过json将新数据传递给保存的pojo模型并使用以下功能:

h2o.predict_json()

但是,新数据必须以json格式提供。

有关详细信息,请参阅this question