EMD距离wasserstein_distance的使用

本文详细介绍了使用scipy库中的wasserstein_distance函数来衡量两个概率分布之间的相似性。通过多个实例展示了当两个分布完全相同时,差异值为0;当分布完全不同,差异值会增大。同时,还演示了如何在分布中考虑每个点的不同权重。

wasserstein_distance

所属模块:scipy

功能:衡量两个分布之间的相似性


实例1:计算EMD距离值

#code-python(3.6)
from scipy.stats import wasserstein_distance
x0 = wasserstein_distance([0, 1, 3], [0, 1, 3])		#相同的分布,分布的差异为0
x1 = wasserstein_distance([3, 1, 0], [0, 1, 3])		#相同分布,但元素顺序打乱,分布的差异值仍然为0
x2 = wasserstein_distance([0, 1, 2], [0, 1, 3])     #分布中只有部分值相同,分布的差异值仍然为0.3
x3 = wasserstein_distance([4, 5, 6], [0, 1, 3])     #分布完全不同,分布的差异值为3.6
print("x0 = ",x0)
print("x1 = ",x1)
print("x2 = ",x2)
print("x3 = ",x3)

函数说明

scipy.stats.wasserstein_distance(u_values, v_values, u_weights=None, v_weights=None)

返回值说明

返回一个浮点数float,返回值越大,两个分布的距离差别越大

参数说明

u_values, v_values		要计算距离的两个分布的集合,形式可以是列表
u_weights, v_weights	样本点的权重,若总权重不为1,则会被归一化为1;默认是每个点的权重都一样

实例2:分布中每个点的权重不同

#code-python(3.6)
from scipy.stats import wasserstein_distance
x = wasserstein_distance([3.4, 3.9, 7.5, 7.8], [4.5, 1.4],[1.4, 0.9, 3.1, 7.2], [3.2, 3.5])
#分布1是[3.4, 3.9, 7.5, 7.8],每个点的权重是[1.4, 0.9, 3.1, 7.2];
#分布2是[4.5, 1.4],每个点的权重是[3.2, 3.5];
print("x = ",x)
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值