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

EuR*_*rth 0 c++ python 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))
Run Code Online (Sandbox Code Playgroud)

然后我期待test.cpp创建一个名为的文件,模型以 C++ 格式保存。

但是,我的当前目录中没有任何内容。

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

EuR*_*rth 5

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

  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)
Run Code Online (Sandbox Code Playgroud)
! ~/LightGBM/lightgbm config=train.conf
Run Code Online (Sandbox Code Playgroud)
! ~/LightGBM/lightgbm config=convert.conf
Run Code Online (Sandbox Code Playgroud)

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