You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何导出Python训练的LGBM模型并在C++中加载实现预测

LGBM模型Python导出、C++加载实现方案

1. Python侧模型导出

不要使用Python专属的pickle序列化方式,该格式无法跨语言解析,直接调用LGBM原生的模型导出接口即可:

# 训练代码执行完成后,直接调用原生booster的save_model方法导出
clf.booster_.save_model('./lgbm_trained_model.txt')

# 若追求更快的加载速度,也可导出为二进制格式
# clf.booster_.save_model('./lgbm_trained_model.bin')

导出的txt/bin文件是LGBM通用的模型结构文件,可被所有支持LGBM的语言环境加载。

2. C++侧模型加载与预测

首先需要提前在C++项目环境中配置好LightGBM的依赖:引入头文件目录,链接对应平台的lib_lightgbm静态/动态库。

加载&推理示例代码

#include <LightGBM/boosting.h>
#include <vector>
#include <cmath>

int main() {
    LightGBM::Boosting* lgb_booster = nullptr;
    // 加载训练好的模型文件
    int load_status = LightGBM::Boosting::CreateBoosting(
        "gbdt", 
        "./lgbm_trained_model.txt", 
        &lgb_booster
    );
    if (load_status != 0 || lgb_booster == nullptr) {
        // 模型加载失败的异常处理逻辑
        return -1;
    }

    // 构造输入样本,特征顺序必须和Python训练时的特征顺序完全一致
    int feat_num = lgb_booster->GetNumFeature();
    std::vector<double> input_sample(feat_num);
    // 这里填充你实际的样本特征值
    // input_sample[0] = xxx; input_sample[1] = xxx; ...

    // 执行预测
    std::vector<double> predict_result(1); // 二分类、回归任务输出长度为1,多分类对应类别数量
    lgb_booster->PredictRaw(input_sample.data(), predict_result.data());

    // 二分类任务可以手动sigmoid得到概率值
    double positive_prob = 1.0 / (1.0 + exp(-predict_result[0]));

    // 资源释放
    delete lgb_booster;
    return 0;
}

编译注意事项

编译时需要指定LightGBM的头文件、库文件路径,示例g++编译指令如下:
g++ your_predict_code.cpp -o lgb_predict -I/path/to/lightgbm/include -L/path/to/lightgbm/lib -l_lightgbm


内容的提问来源于stack exchange,提问作者alili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 07:30:00