【问题标题】:Error in R h2o.predict with xgboost -> java.lang.NullPointerExceptionR h2o.predict 中的错误与 xgboost -> java.lang.NullPointerException
【发布时间】:2017-12-04 13:19:59
【问题描述】:

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

【问题讨论】:

标签: r xgboost h2o


【解决方案1】:

在我写这篇文章的时候(2018 年 1 月),这仍然是 xgboost 的一个错误。请参阅this ticket 了解更多信息。

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

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

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

h2o.predict_json()

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

详情请见this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2016-03-27
    • 2017-08-06
    • 1970-01-01
    • 2014-08-01
    • 2016-11-20
    • 2016-02-12
    相关资源
    最近更新 更多