Linfa
linfa (意大利语) / 树液 (英语):
植物体内至关重要的循环流体。
linfa
旨在提供一个全面的工具包,用于使用Rust构建机器学习应用程序。
在精神上与Python的scikit-learn
类似,它专注于日常机器学习任务中的常见预处理任务和经典机器学习算法。
当前状态
linfa
目前处于什么水平?我们学习了吗?
linfa
目前提供包含以下算法的子包:
名称 | 用途 | 状态 | 类别 | 备注 |
---|---|---|---|---|
聚类 | 数据聚类 | 已测试 / 已基准测试 | 无监督学习 | 对未标记数据进行聚类;包含K均值、高斯混合模型、DBSCAN和OPTICS |
核方法 | 数据转换的核方法 | 已测试 | 预处理 | 将特征向量映射到高维空间 |
线性 | 线性回归 | 已测试 | 部分拟合 | 包含普通最小二乘法(OLS)、广义线性模型(GLM) |
弹性网络 | 弹性网络 | 已测试 | 监督学习 | 带弹性网络约束的线性回归 |
逻辑回归 | 逻辑回归 | 已测试 | 部分拟合 | 构建二分类逻辑回归模型 |
降维 | 降维 | 已测试 | 预处理 | 扩散映射和主成分分析(PCA) |
决策树 | 决策树 | 已测试 / 已基准测试 | 监督学习 | 线性决策树 |
支持向量机 | 支持向量机 | 已测试 | 监督学习 | 对标记数据集进行分类或回归分析 |
层次聚类 | 凝聚层次聚类 | 已测试 | 无监督学习 | 聚类并构建聚类层次结构 |
贝叶斯 | 朴素贝叶斯 | 已测试 | 监督学习 | 包含高斯朴素贝叶斯 |
独立成分分析 | 独立成分分析 | 已测试 | 无监督学习 | 包含FastICA实现 |
偏最小二乘法 | 偏最小二乘法 | 已测试 | 监督学习 | 包含用于降维和回归的PLS估计器 |
t-SNE | 降维 | 已测试 | 无监督学习 | 包含精确解和Barnes-Hut近似t-SNE |
预处理 | 归一化与向量化 | 已测试 / 已基准测试 | 预处理 | 包含数据归一化/白化和计数向量化/tf-idf |
最近邻 | 最近邻与距离 | 已测试 / 已基准测试 | 预处理 | 空间索引结构和距离函数 |
FTRL | 跟随正则化领导者 - 近端 | 已测试 / 已基准测试 | 部分拟合 | 包含L1和L2正则化。可进行增量更新 |
我们相信,只有通过重大的社区努力才能培育、构建和维持Rust中的机器学习生态系统 - 没有其他前进的道路。
如果这引起了您的共鸣,请查看路线图并参与其中!
BLAS/Lapack后端
某些算法 crate 需要使用外部库来进行线性代数运算。默认情况下,我们使用纯 Rust 实现。但是,你也可以选择使用外部 BLAS/LAPACK 后端库,方法是启用 blas
特性以及与你的 BLAS 后端对应的特性。目前你可以在以下 BLAS/LAPACK 后端中选择:openblas
、netblas
或 intel-mkl
。
后端 | Linux | Windows | macOS |
---|---|---|---|
OpenBLAS | ✔️ | - | - |
Netlib | ✔️ | - | - |
Intel MKL | ✔️ | ✔️ | ✔️ |
每个 BLAS 后端都有两个可用的特性。这些特性允许你选择链接系统中的 BLAS 库或静态构建库。例如,intel-mkl
后端的特性是 intel-mkl-static
和 intel-mkl-system
。
在算法 crate 上启用 Intel MKL 后端的 Cargo 标志示例是 --features blas,linfa/intel-mkl-system
。请注意,BLAS 后端特性是在 linfa
crate 上定义的,应该只在最终的可执行文件中指定。
许可证
双重许可以与 Rust 项目兼容。
根据 Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 或 MIT 许可证 http://opensource.org/licenses/MIT 授权,由你选择。除非遵守这些条款,否则不得复制、修改或分发本文件。