Skip to content

Mottl/lightgbm3-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lightgbm3 — Rust bindings for LightGBM

Crates.io Docs.rs build

lightgbm3 is based on lightgbm (which is unsupported by now), but it is not back-compatible with it.

Installation

cargo add lightgbm3

Since lightgbm3 compiles LightGBM from source, you also need to install development libraries:

for Linux:

apt install -y cmake clang libclang-dev libc++-dev gcc-multilib

for Mac:

brew install cmake
brew install libomp # only required if you compile with "openmp" feature

for Windows

  1. Install CMake and VS Build Tools.
  2. Install LLVM and set LIBCLANG_PATH environment variable (i.e. C:\Program Files\LLVM\bin)

Please see below for details.

Usage

Training:

use lightgbm3::{Dataset, Booster};
use serde_json::json;

let features = vec![vec![1.0, 0.1, 0.2],
                    vec![0.7, 0.4, 0.5],
                    vec![0.9, 0.8, 0.5],
                    vec![0.2, 0.2, 0.8],
                    vec![0.1, 0.7, 1.0]];
let labels = vec![0.0, 0.0, 0.0, 1.0, 1.0];
let dataset = Dataset::from_vec_of_vec(features, labels, true).unwrap();
let params = json!{
   {
        "num_iterations": 10,
        "objective": "binary",
        "metric": "auc",
    }
};
let bst = Booster::train(dataset, &params).unwrap();
bst.save_file("path/to/model.lgb").unwrap();

Inference:

use lightgbm3::{Dataset, Booster};

let bst = Booster::from_file("path/to/model.lgb").unwrap();
let features = vec![1.0, 2.0, -5.0];
let n_features = features.len();
let y_pred = bst.predict_with_params(&features, n_features as i32, true, "num_threads=1").unwrap()[0];

Look in the ./examples/ folder for more details:

Features

lightgbm3 supports the following features:

  • polars for polars support
  • openmp for MPI support
  • gpu for GPU support
  • cuda for experimental CUDA support

Benchmarks

cargo bench

Add --features=openmp, --features=gpu and --features=cuda appropriately.

Development

git clone --recursive https://github.com/Mottl/lightgbm3-rs.git

Thanks

Great respect to vaaaaanquish for the LightGBM Rust package, which unfortunately no longer supported.

Much reference was made to implementation and documentation. Thanks.

About

LightGBM Rust library

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages