https://github.com/davechallis/rust-xgboost
Rust bindings for XGBoost.
https://github.com/davechallis/rust-xgboost
ffi machine-learning rust xgboost
Last synced: 6 months ago
JSON representation
Rust bindings for XGBoost.
- Host: GitHub
- URL: https://github.com/davechallis/rust-xgboost
- Owner: davechallis
- License: mit
- Created: 2018-05-18T13:32:50.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-02-02T13:05:19.000Z (over 2 years ago)
- Last Synced: 2024-04-14T07:20:45.534Z (about 2 years ago)
- Topics: ffi, machine-learning, rust, xgboost
- Language: Rust
- Homepage:
- Size: 107 KB
- Stars: 95
- Watchers: 6
- Forks: 34
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-ai-libraries - rust-xgboost - Rust language bindings for XGBoost, the popular gradient boosted tree library. Enables using XGBoost's optimized gradient boosting implementation within Rust applications with native Rust ergonomics. ([Read more](/details/rust-xgboost.md)) `Bindings` `Xgboost` `Gbdt` (Machine Learning)
README
# rust-xgboost
[](https://travis-ci.com/davechallis/rust-xgboost)
[](https://docs.rs/xgboost/badge.svg)
Rust bindings for the [XGBoost](https://xgboost.ai) gradient boosting library.
* [Documentation](https://docs.rs/xgboost)
Basic usage example:
```rust
extern crate xgboost;
use xgboost::{parameters, DMatrix, Booster};
fn main() {
// training matrix with 5 training examples and 3 features
let x_train = &[1.0, 1.0, 1.0,
1.0, 1.0, 0.0,
1.0, 1.0, 1.0,
0.0, 0.0, 0.0,
1.0, 1.0, 1.0];
let num_rows = 5;
let y_train = &[1.0, 1.0, 1.0, 0.0, 1.0];
// convert training data into XGBoost's matrix format
let mut dtrain = DMatrix::from_dense(x_train, num_rows).unwrap();
// set ground truth labels for the training matrix
dtrain.set_labels(y_train).unwrap();
// test matrix with 1 row
let x_test = &[0.7, 0.9, 0.6];
let num_rows = 1;
let y_test = &[1.0];
let mut dtest = DMatrix::from_dense(x_test, num_rows).unwrap();
dtest.set_labels(y_test).unwrap();
// configure objectives, metrics, etc.
let learning_params = parameters::learning::LearningTaskParametersBuilder::default()
.objective(parameters::learning::Objective::BinaryLogistic)
.build().unwrap();
// configure the tree-based learning model's parameters
let tree_params = parameters::tree::TreeBoosterParametersBuilder::default()
.max_depth(2)
.eta(1.0)
.build().unwrap();
// overall configuration for Booster
let booster_params = parameters::BoosterParametersBuilder::default()
.booster_type(parameters::BoosterType::Tree(tree_params))
.learning_params(learning_params)
.verbose(true)
.build().unwrap();
// specify datasets to evaluate against during training
let evaluation_sets = &[(&dtrain, "train"), (&dtest, "test")];
// overall configuration for training/evaluation
let params = parameters::TrainingParametersBuilder::default()
.dtrain(&dtrain) // dataset to train with
.boost_rounds(2) // number of training iterations
.booster_params(booster_params) // model parameters
.evaluation_sets(Some(evaluation_sets)) // optional datasets to evaluate against in each iteration
.build().unwrap();
// train model, and print evaluation data
let bst = Booster::train(¶ms).unwrap();
println!("{:?}", bst.predict(&dtest).unwrap());
}
```
See the [examples](https://github.com/davechallis/rust-xgboost/tree/master/examples) directory for
more detailed examples of different features.
## Status
Currently in a very early stage of development, so the API is changing as usability issues occur,
or new features are supported.
Builds against XGBoost 0.81.
### Platforms
Tested:
* Linux
* Mac OS
Unsupported:
* Windows