Hello Mat

 找回密码
 立即注册
查看: 34|回复: 1

lightGBM

[复制链接]

1332

主题

1560

帖子

10

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22693
发表于 昨天 21:28 | 显示全部楼层 |阅读模式
lightGBM
import lightgbm as LGB
  1. #建立LGB的dataset格式数据
  2. lgb_train = LGB.Dataset(X_train, y_train)
  3. lgb_eval = LGB.Dataset(X_test, y_test, reference=lgb_train)
  4. #定义超参数dict
  5. params = {
  6.     'task': 'train',
  7.     'boosting_type': 'gbdt',
  8.     'objective': 'regression',
  9.     'max_depth': 7,
  10.     'num_leaves': 31,
  11.     'learning_rate': 0.1,
  12.     'feature_fraction': 0.8,
  13.     'bagging_fraction': 0.8,
  14.     'bagging_freq': 5,
  15.     'verbose': -1
  16. }
  17. # 训练 train
  18. m1 = LGB.train(params,lgb_train,num_boost_round=100,
  19.                valid_sets=[lgb_train,lgb_eval])
  20. #预测数据集
  21. y_pred = m1.predict(X_test)
复制代码
保存模型与加载模型:
  1. # 保存模型
  2. LGB.save_model('lightgbm_model.txt')

  3. # 加载模型
  4. loaded_gbm = LGB.Booster(model_file='lightgbm_model.txt')
  5. # 使用加载的模型进行预测
  6. loaded_y_pred = loaded_gbm.predict(X_test, num_iteration=loaded_gbm.best_iteration)
复制代码



PS:不友好的是,原生接口每次只能预测一个变量,多输出需要自己构建多个模型
参考
【1】建议使用原生接口 https://blog.csdn.net/sa726663676/article/details/125229357
【2】https://github.com/Wanke15/Light ... /blob/main/test.cpp


算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

1332

主题

1560

帖子

10

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22693
 楼主| 发表于 昨天 21:41 | 显示全部楼层
C++
#include <LightGBM/c_api.h>

  1. int main() {
  2.     // 模型文件路径
  3.     const char* model_file = "model.txt";

  4.     // 用于存储模型的迭代次数和句柄
  5.     int num_iterations = 0;
  6.     BoosterHandle booster_handle;

  7.     // 加载模型
  8.         int ret ;
  9.         int p=1;
  10.         FEATURE_LENGTH = feature_num;  // 输入的特征长度
  11.         ret = LGBM_BoosterCreateFromModelfile(model_path.data(), &p, &booster_handle);
  12.     if (ret != 0) {
  13.         std::cerr << "Failed to load model from file " << model_file << std::endl;
  14.         return -1;
  15.     }

  16.     // 执行预测(注意:)
  17.         void* in_p = static_cast<void*>(input_data.data());
  18.         std::vector<double> out(1, 0);
  19.         double* out_result = static_cast<double*>(out.data());
  20.         int64_t out_len;
  21.         int res = LGBM_BoosterPredictForMat(model, in_p, C_API_DTYPE_FLOAT32, 1, FEATURE_LENGTH, 1, C_API_PREDICT_NORMAL, 0, -1, "None", &out_len, out_result);

  22.     LGBM_BoosterFree(booster_handle);

  23.     return 0;
  24. }
复制代码




算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2025-7-4 18:49 , Processed in 0.213931 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表