2 个版本

0.1.1 2023 年 5 月 8 日
0.1.0 2023 年 3 月 17 日

机器学习 类别中排名 #480

MIT 许可协议

30KB
849 行(不包括注释)

快速统计

一个用于在流数据上进行统计分析的 Rust 库。

简介

从相应的 nodejs 库 https://github.com/bluesmoon/node-faststats 中获得灵感,fast-stats 是一个 Rust 库,它允许以速度为重点计算各种统计量。此库还通过允许对流数据进行各种转换来扩展上述功能。

在处理流数据统计时,fast-stats 尝试利用两个重要因素来提高执行时间

  1. 统计量应随着数据集的增加而增量更新,而不是每次添加新数据时都在整个数据集上计算。对于大型数据集(和/或高频处理),遍历整个相关数据可能成为瓶颈。
  2. 许多统计量都是从相同的简单基础构建块计算得出的。

这是通过在数据流进入结构时维护几个变量的运行缓存来实现的。

以计算标准差为例,其速度的显著提高是由于观察到可以使用基于值的增量总和和这些值的平方的增量总和的简单公式来计算方差。

这对于需要根据不断更新的流的收缩、扩展或固定数据窗口来计算统计量的应用特别有用。

唯一的权衡是额外使用少量内存来存储这些运行值。

用法

类似于数据向量的 Stats 结构,它维护用于计算统计量的各种值的运行更新。使用 pushpop 和以下功能部分中列出的其他向量方法向此对象添加和删除数据。

use fast_stats::fstats_f64;

let v = Stats::new();
v.push_vec(vec![4.0, -1.0, 3.0]);
println!("{}", v.mean());
// 2.0

选项

除了 fstats_f64 之外,我们还包含了一个 fstats_float,它在浮点类型上通用,但会牺牲一点速度。

功能

统计

以下统计方法受到支持

  • 平均值
  • 标准差
  • 最小值
  • 最大值
  • ..

数据转换

以下方法目前受支持,并提供与标准库中相应方法相同的功能(除drain外)

  • 追加
  • drain
  • 插入
  • 是否为空
  • 长度
  • 弹出
  • 推入
  • push_vec
  • 移除
  • 调整大小
  • splice
  • split_off
  • swap_remove
  • 截断
  • ..

不在标准库中的新方法包括

  • trim

该函数通过删除给定索引之前的所有元素来缩短向量。

清除所有数据

reset 方法清除所有数据。

获取原始数据

data 方法返回底层数据的向量。

依赖关系

~200KB