5 个版本
0.0.5 | 2024 年 8 月 5 日 |
---|---|
0.0.4 | 2024 年 8 月 4 日 |
0.0.3 | 2024 年 5 月 20 日 |
0.0.2 | 2024 年 3 月 5 日 |
0.0.1 | 2023 年 6 月 16 日 |
#50 在 机器学习 类别中
每月263次下载
用于 3 个 crate(通过 jams-core)
150KB
2.5K SLoC
LGBM-rs
LightGBM 的非官方 Rust 绑定
要求
Windows 或 Linux
- 安装 LightGBM 并根据 LightGBM 文档 进行构建。
- 设置环境变量
LIGHTGBM_LIB_DIR
为包含构建输出目录(Windows 上的.dll
和.lib
,Linux 上的.so
)。
MacOS
- 运行
brew install lightgbm
并在您的系统上安装 LightGBM。 - 设置环境变量
LIGHTGBM_LIB_DIR
为包含lib_lightgbm.dylib
的目录。
brew install lightgbm
export LIGHTGBM_LIB_DIR=/opt/homebrew/Cellar/lightgbm/4.5.0/lib/
示例
Cargo.toml
[dependencies]
lgbm = "0.0.5"
main.rs
use lgbm::{
parameters::{Objective, Verbosity},
Booster, Dataset, Field, MatBuf, Parameters, PredictType,
};
use std::sync::Arc;
fn main() -> anyhow::Result<()> {
let mut p = Parameters::new();
p.push("num_class", 3);
p.push("objective", Objective::Multiclass);
p.push("verbosity", Verbosity::Fatal);
let mut train = Dataset::from_mat(&MatBuf::from_rows(train_features()), None, &p)?;
train.set_field(Field::LABEL, &train_labels())?;
let mut valid = Dataset::from_mat(&MatBuf::from_rows(valid_features()), Some(&train), &p)?;
valid.set_field(Field::LABEL, &valid_labels())?;
let mut b = Booster::new(Arc::new(train), &p)?;
b.add_valid_data(Arc::new(valid))?;
for _ in 0..100 {
if b.update_one_iter()? {
break;
}
}
let p = Parameters::new();
let rs = b.predict_for_mat(
&MatBuf::from_rows(test_features()),
PredictType::Normal,
0,
None,
&p,
)?;
println!("\n{rs:.5}");
Ok(())
}
fn train_features() -> Vec<[f64; 1]> {
(0..128).map(|x| [(x % 3) as f64]).collect()
}
fn train_labels() -> Vec<f32> {
(0..128).map(|x| (x % 3) as f32).collect()
}
fn valid_features() -> Vec<[f64; 1]> {
(0..64).map(|x| [(x % 3) as f64]).collect()
}
fn valid_labels() -> Vec<f32> {
(0..64).map(|x| (x % 3) as f32).collect()
}
fn test_features() -> Vec<[f64; 1]> {
(0..4).map(|x| [(x % 3) as f64]).collect()
}
输出
num_data : 4
num_class : 3
num_2 : 1
| 0 | 1 | 2 |
---|---------|---------|---------|
0 | 0.99998 | 0.00001 | 0.00001 |
1 | 0.00001 | 0.99998 | 0.00001 |
2 | 0.00001 | 0.00001 | 0.99998 |
3 | 0.99998 | 0.00001 | 0.00001 |
静态链接或动态链接
支持以下类型的链接。
os | static | dynamic |
---|---|---|
Windows | ✔ | ✔ |
Linux | ✔ | ✔ |
MacOS | ✔ |
在 Windows 上,如果 lib_lightgbm.dll
存在于 LIGHTGBM_LIB_DIR
指定的目录中,它将被动态链接。否则,它将被静态链接。
在 Linux 上,如果 lib_lightgbm.a
存在于 LIGHTGBM_LIB_DIR
指定的目录中,它将被静态链接。否则,它将被动态链接。
许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
贡献
除非您明确声明,否则您有意提交以包含在本作品中的任何贡献都将根据 MIT 许可证进行,不附加任何额外条款或条件。
依赖项
~4–6MB
~92K SLoC