2 个版本
0.1.1 | 2019 年 6 月 29 日 |
---|---|
0.1.0 | 2019 年 6 月 28 日 |
#10 in #earth
32KB
748 代码行
EMD
一个用于计算地球搬运距离(EMD,或称“Wasserstein 距离”或“Kantorovich–Rubinstein 距离”)的简单 Rust 库。
这是一个 Gary Doran 的 pyemd 的包装器。
基本用法
在 Cargo.toml
中包含以下内容
emd = "0.1.1"
然后
extern crate emd;
#[macro_use(array)]
extern crate ndarray;
use emd::*;
use ndarray::*;
let x = array![0., 1.];
let y = array![5., 3.];
assert_eq!(distance(&x.view(), &y.view()), 3.5);
查看 文档 了解更多信息。
维护者
lib.rs
:
地球搬运距离 (EMD)
这是一个用于计算 EMD(或 Wasserstein)度量的 pyemd
[1] 的包装器。默认情况下,它使用欧几里得距离作为成本函数,但可以通过使用泛型距离函数 distance_generic()
来更改。
示例
它允许计算两个向量(例如,直方图)之间的距离
extern crate emd;
#[macro_use(array)]
extern crate ndarray;
use emd::*;
use ndarray::*;
let x = array![0., 1.];
let y = array![5., 3.];
assert_eq!(distance(&x.view(), &y.view()), 3.5);
或矩阵(例如,多维直方图)之间的距离。注意,在这种情况下,两个矩阵必须具有相同数量的列。
extern crate emd;
#[macro_use(array)]
extern crate ndarray;
use emd::*;
use ndarray::*;
let x = array![[4., 3.], [3., 6.], [2., 3.]];
let y = array![[2., 3.], [1., 3.]];
assert_eq!(distance_multi(&x.view(), &y.view()), 2.035183758487996);
或者,可以通过使用 distance_generic()
来计算具有所选距离作为成本函数的矩阵(以及由此扩展的向量)的 EMD。
参考文献
依赖关系
~2MB
~38K SLoC