从Python以`.cpp`格式保存LGBM模型

时间:2019-06-05 10:48:37

标签: python c++ machine-learning lightgbm

如果我跑步

from sklearn.datasets import load_breast_cancer
import lightgbm as lgb

breast_cancer = load_breast_cancer()
data = breast_cancer.data
target = breast_cancer.target

params = {
    "task": "convert_model",
    "convert_model_language": "cpp",
    "convert_model": "test.cpp",
}

gbm = lgb.train(params, lgb.Dataset(data, target))

然后我期望将创建一个名为test.cpp的文件,并以c ++格式保存该模型。

但是,我的当前目录中什么也没有。

我已经阅读了文档(https://lightgbm.readthedocs.io/en/latest/Parameters.html#io-parameters),但是看不出我在做什么错。

2 个答案:

答案 0 :(得分:2)

在文档中,他们说:

  

注意:只能在CLI版本中使用

convert_model 和 convert_model_language 参数下。

这意味着您可能应该使用LGBM的CLI(命令行界面)而不是python包装器来完成此操作。

Link到快速入门CLI版本。

答案 1 :(得分:2)

这是一个真正的“傻瓜”答案:

  1. 安装lightgbm的CLI版本:https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html

  2. 记下您的安装路径,并找到可执行文件。例如,对我来说,这是~/LightGBM/lightgbm

  3. 在Jupyter笔记本中运行以下命令:

from sklearn.datasets import load_breast_cancer
import pandas as pd

breast_cancer = load_breast_cancer()
data = pd.DataFrame(breast_cancer.data)
target = pd.DataFrame(breast_cancer.target)

pd.concat([target, data], axis=1).to_csv("regression.train", header=False, index=False)

train_conf = """
task = train
objective = binary
metric = auc
data = regression.train
output_model = trained_model.txt
"""

with open("train.conf", "w") as f:
    f.write(train_conf)

conf_convert = """
task = convert_model
input_model= trained_model.txt
"""

with open("convert.conf", "w") as f:
    f.write(conf_convert)
! ~/LightGBM/lightgbm config=train.conf
! ~/LightGBM/lightgbm config=convert.conf

您的模型将保存在当前目录中。