有没有办法在python中测量多维空间中两个分布之间的距离?

이성령*_*이성령 5 python distribution distance scipy

我想测量多维空间中两个分布之间的距离。

例如,我想在多个维度上进行诸如 Wasserstein 分布或能量距离之类的测量,而不是进行一维比较。

我在一维中找到了一个包,但我仍然在多维中找到了一个。我怎样才能摆脱困境?

一维能量距离 一维瓦瑟斯坦距离

Ami*_*khi 1

我想你还是想测量两个分布之间的距离?即使您的数据是多维的,您也可以通过展平数组来导出每个数组的分布flat_array1 = array1.flatten(),并flat_array2 = array2.flatten()测量每个数组的分布(我的代码用于累积分布,但您也可以采用高斯分布)-我在这里在我的函数中进行展平:

`def ecdf(data):
    '''compute eCDF of an image'''
    data_flatten = data.flatten()
    sort_data = np.sort(data_flatten)
    values, bins = np.histogram(sort_data, normed=True)
    cum_data = np.cumsum(values)

    return (bins, cum_data)`
Run Code Online (Sandbox Code Playgroud)

然后测量两个分布之间的距离。

假设您有两个 3D 数组,并且想要测量相似性(或相异性,即距离),您可以使用上述函数检索分布,然后使用熵、Kullback Liebler 或 Wasserstein Distance。