2 个版本

0.1.1 2019 年 6 月 29 日
0.1.0 2019 年 6 月 28 日

#10 in #earth

MIT 许可协议

32KB
748 代码行

EMD

Build Status

一个用于计算地球搬运距离(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);

查看 文档 了解更多信息。

维护者

gchers, ehentgen


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。

参考文献

[1] https://github.com/garydoranjr/pyemd

依赖关系

~2MB
~38K SLoC