#calculations #dataframe #lazy-evaluation #scipy #statistics

vaughan

在Polars的基础上,使用Rust实现的SciPy风格的各类科学计算

1个不稳定版本

0.1.0 2024年5月20日

#857 in 科学

BSD-3-Clause

42KB
744

Vaughan

Crates.io Documentation Codecov Dependency status License: BSD-3-Clause

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绑定
  • 基准测试
  • 统计计算
  • 数据预处理程序,如正则化
  • 降维

致谢

感谢您使用Vaughan!希望它有助于您在科学和数据科学方面的努力。

依赖关系

~39–70MB
~1.5M SLoC