#线性回归 #机器学习 #线性 #linfa #ai

linfa-elasticnet

一个用于 Rust 的机器学习框架

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机器学习

Download history 302/week @ 2024-03-10 292/week @ 2024-03-17 452/week @ 2024-03-24 445/week @ 2024-03-31 483/week @ 2024-04-07 378/week @ 2024-04-14 780/week @ 2024-04-21 499/week @ 2024-04-28 439/week @ 2024-05-05 567/week @ 2024-05-12 434/week @ 2024-05-19 589/week @ 2024-05-26 552/week @ 2024-06-02 228/week @ 2024-06-09 202/week @ 2024-06-16 83/week @ 2024-06-23

1,122 每月下载量

MIT/Apache

270KB
5K SLoC

Elastic Net

linfa-elasticnet 提供了弹性网线性回归的纯 Rust 实现。

总体情况

linfa-elasticnetlinfa 生态系统中的一个 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