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

Save LGBM model in `.cpp` format from Python

如果我运行

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),但无法判断我做错了什么。

他们在文档中说:

Note: can be used only in CLI version

convert_modelconvert_model_language 参数下。

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

Link 到快速启动 CLI 版本。

这是一个真实的 'for dummies' 答案:

  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

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