8 个版本 (4 个破坏性更新)
0.7.0 | 2023年10月16日 |
---|---|
0.6.1 | 2022年12月3日 |
0.6.0 | 2022年6月15日 |
0.5.1 | 2022年3月1日 |
0.3.0 | 2021年1月20日 |
#828 在 机器学习
1,122 每月下载量
270KB
5K SLoC
Elastic Net
linfa-elasticnet
提供了弹性网线性回归的纯 Rust 实现。
总体情况
linfa-elasticnet
是 linfa
生态系统中的一个 crate,旨在创建一个用于在纯 Rust 中实现经典机器学习工具包,类似于 Python 的 scikit-learn
。
当前状态
linfa-elasticnet
crate 提供了具有岭和 LASSO 约束的线性回归。求解器使用坐标下降法找到最优解。
该库包含线性回归模型的弹性网实现。它结合了 LASSO 和岭方法的 l1 和 l2 惩罚,因此为特征选择提供了更大的灵活性。随着惩罚的增加,某些参数变为零,相应的变量从模型中删除。
另请参阅
BLAS/Lapack 后端
参见 本节 以启用外部 BLAS/LAPACK 后端。
示例
在 examples/
目录中有一个使用示例。要运行,请使用
$ cargo run --example elasticnet
显示源代码
use linfa::prelude::*;
use linfa_elasticnet::{ElasticNet, Result};
// load Diabetes dataset
let (train, valid) = linfa_datasets::diabetes().split_with_ratio(0.90);
// train pure LASSO model with 0.1 penalty
let model = ElasticNet::params()
.penalty(0.3)
.l1_ratio(1.0)
.fit(&train)?;
println!("intercept: {}", model.intercept());
println!("params: {}", model.hyperplane());
println!("z score: {:?}", model.z_score());
// validate
let y_est = model.predict(&valid);
println!("predicted variance: {}", valid.r2(&y_est)?);
# Result::Ok(())
依赖项
~2–12MB
~185K SLoC