6 releases

0.2.3 Nov 11, 2021
0.2.2 Nov 16, 2019
0.2.1 Aug 15, 2019
0.1.1 Aug 15, 2019

#472 in Machine learning

Download history 432/week @ 2023-12-14 1146/week @ 2023-12-21 529/week @ 2023-12-28 1014/week @ 2024-01-04 1059/week @ 2024-01-11 835/week @ 2024-01-18 1183/week @ 2024-01-25 1221/week @ 2024-02-01 1896/week @ 2024-02-08 1708/week @ 2024-02-15 1246/week @ 2024-02-22 1023/week @ 2024-02-29 1297/week @ 2024-03-07 872/week @ 2024-03-14 562/week @ 2024-03-21 786/week @ 2024-03-28

3,698 downloads per month
Used in 3 crates

Apache-2.0

25KB
541 lines

T-Digest algorithm in rust

Build Status codecov

This implementation is following Facebook folly's implementation

Installation

Add this to your Cargo.toml:

[dependencies]
tdigest = "0.2"

then you are good to go. If you are using Rust 2015 you have to extern crate tdigest to your crate root as well.

Example

use tdigest::TDigest;

let t = TDigest::new_with_size(100);
let values: Vec<f64> = (1..=1_000_000).map(f64::from).collect();
let t = t.merge_sorted(values);
let ans = t.estimate_quantile(0.99);
let expected: f64 = 990_000.0;
let percentage: f64 = (expected - ans).abs() / expected;

assert!(percentage < 0.01);

lib.rs:

T-Digest algorithm in rust

Installation

Add this to your Cargo.toml:

[dependencies]
tdigest = "0.2"

then you are good to go. If you are using Rust 2015 you have to extern crate tdigest to your crate root as well.

Example

use tdigest::TDigest;

let t = TDigest::new_with_size(100);
let values: Vec<f64> = (1..=1_000_000).map(f64::from).collect();

let t = t.merge_sorted(values);

let ans = t.estimate_quantile(0.99);
let expected: f64 = 990_000.0;

let percentage: f64 = (expected - ans).abs() / expected;
assert!(percentage < 0.01);

Dependencies

~185–420KB