LightGBM:从JSON加载

4
我正在尝试从 JSON 文件指针加载 LightGBM.Booster,但是在网上找不到示例。
    import json ,lightgbm
    import numpy as np
    X_train = np.arange(0, 200).reshape((100, 2))
    y_train = np.tile([0, 1], 50)
    tr_dataset = lightgbm.Dataset(X_train, label=y_train)
    booster = lightgbm.train({}, train_set=tr_dataset)
    model_json = booster.dump_model()
    with open('model.json', 'w+') as f:
        json.dump(model_json, f, indent=4)
    with open('model.json') as f2:
        model_json = json.load(f2)

我怎样才能从 f2model_json 创建一个 lightGBM booster 呢? 这个 片段 只展示了如何将数据转换为 JSON。model_from_string 可以帮助,但似乎需要该 booster 的实例,在加载之前我没有这个实例。
1个回答

4

暂时没有针对Booster直接从JSON创建的方法。源代码和文档中也没有相关方法,同时也没有GitHub问题报告。

因此,我只是通过从文本文件中加载模型来进行操作。

gbm.save_model('model.txt')  # gbm is trained Booster instance
#  ...
bst = lgb.Booster(model_file='model.txt')

或者使用pickle来存储和加载模型:

import pickle
pickle.dump(gbm, open('model.pkl', 'wb'))
# ...
gbm = pickle.load(open('model.pkl', 'rb'))

不幸的是,pickle文件是无法读取的(或者说,这些文件不太清晰)。但是总比没有好。


这两种格式(save_modelsave_model)包含相同的信息,其中一种格式应该可以转换为另一种格式...但是目前lightgbm还没有这个功能:( - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接