在Python中,计算Earth Mover’s Distance (EMD)通常使用scipy
库中的scipy.stats.wasserstein_distance
函数,该函数计算的是Wasserstein距离,它与EMD非常相似,都是用来衡量两个分布之间的距离。
以下是一个简单的Python程序例子,展示了如何使用scipy.stats.wasserstein_distance
来计算两个一维分布之间的距离:
import numpy as np
from scipy.stats import wasserstein_distance# 假设我们有两个一维分布,用numpy数组表示它们的概率质量函数
dist_a = np.array([0.1, 0.2, 0.7]) # 分布A
dist_b = np.array([0.3, 0.4, 0.3]) # 分布B# 计算这两个分布之间的Wasserstein距离
emd = wasserstein_distance(dist_a, dist_b)print(f"Earth Mover's Distance (Wasserstein distance) between the two distributions: {emd}")
其中,wasserstein_distance
函数计算的是两个一维概率分布之间的距离,这两个分布应该是用概率质量函数或者累积分布函数来表示的。