1个不稳定版本
0.1.0 | 2024年5月20日 |
---|
#857 in 科学
42KB
744 行
Vaughan
Vaughan是一个Rust库,旨在提供快速、可靠且易于使用的各种科学、统计和数据科学相关概念的实现。建立在强大的Polars库之上,Vaughan利用Polars的速度和效率来实现高性能计算。该库是旨在将SciPy/Scikit-learn堆栈引入Polars和Rust的雄心壮志的一部分。Vaughan是以Dorothy Vaughan的名字命名的,她是NASA在太空竞赛期间工作的黑人女性数学家和人类计算机之一,对登月至关重要。
快速入门 🚀
手动将Vaughan添加到Cargo.toml
[dependencies]
vaughan = "0.1.0"
或使用cargo add
cargo add vaughan
目前,Vaughan仅通过Rust使用,但我计划很快添加Python绑定。
以下是一个简单的示例,它改编自测试套件
use vaughan::error_metrics::binary_classification::*;
use polars::prelude::*;
fn main() {
let test = df!(
"predictions" => [0,1,1,1,0,1],
"truth" => [1,0,0,1,0,1]
)?;
println!("{}", accuracy(test.clone().lazy(), "predictions", "truth")?);
println!("{}", f1(test.clone().lazy(), "predictions", "truth")?);
println!("{}", recall(test.clone().lazy(), "predictions", "truth")?);
println!("{}", precision(test.clone().lazy(), "predictions", "truth")?);
}
设计
设计目标
- 拥有出色的测试和文档。文档可能很无聊,但对于良好的用户体验至关重要。这也是我正在努力改进的地方,因此这是本项目的重要焦点。
- 要快。我认为Polars和Rust是这块肥沃土壤的部分原因在于它们带来的速度。我的目标是尽可能在后续工作中保持相同的速度。
- 不要出错。科学计算复杂且微妙,但非常关键。如果这个库将要被任何人用于任何有意义的用途,它需要尽可能地正确。因此,努力确保代码尽可能稳健地测试是非常重要的。
- 培养一个优秀的社区。虽然这不是我可以直接控制的事情,但吸引我关注Rust的部分原因是它欢迎的社区。我希望通过尽可能开放地接受反馈,培养一个对所有人开放的欢迎社区。
非目标
我相信非目标与目标一样,对于良好的和专注的设计至关重要。以下是本项目的几个非目标
- 易于入门。在我看来,易于入门很重要,但不应该成为设计目标本身。这应该是拥有良好文档和直观API的副产品。
- 深度学习与多维数据。这个库的目标是利用Polars的能力。深度学习和多维数据模型的不同之处足够大,以至于我认为Polars并不适合,也不是我的专长。因此,这项功能应该属于其他库。
- 与SciPy或scikit-learn完全兼容/功能对等。虽然SciPy和Scikit-learn是很好的灵感来源,但它们也是具有自身目标的大项目。我将努力实现尽可能高的功能覆盖范围,但无法保证与它们完全匹配。除此之外,Polars的设计与Pandas或NumPy不同,因此基于其构建的代码应该根据其做事方式来设计,而不是之前的那些方式。
路线图
Vaughan还非常年轻,目前甚至还不具备alpha版的标准。它目前只是一个原型。因此,请预期基本没有预警的破坏性变化以及大量缺失的功能。然而,我非常希望扩展它。欢迎提出功能请求、错误报告、拉取请求、问题以及任何其他形式的建设性反馈!这是一个我的业余时间项目,所以我无法承诺任何时间表,但以下是我希望添加的粗略概述
- 全面文档
- Python绑定
- 基准测试
- 统计计算
- 数据预处理程序,如正则化
- 降维
致谢
- Polars:为构建此代码提供基础。
- Scikit-learn:作为灵感来源,并提供实现、基准和测试。
- SciPy:作为灵感来源,并提供实现、基准和测试。
- Dorothy Vaughan:作为数字/计算数学的先驱,并作为灵感。
- Jon Gjengset:他的Rust的优秀教育资源,以及在他的优秀存储库(rust-ci-conf)中提供CI设置的基础https://github.com/jonhoo/rust-ci-conf
感谢您使用Vaughan!希望它有助于您在科学和数据科学方面的努力。
依赖关系
~39–70MB
~1.5M SLoC