一、Pyemd介紹
Pyemd是一個Python包,用於計算文本或向量之間的差異度分數。這個分數表示為”Earth Mover’s Distance”(EMD)。在計算機視覺、自然語言處理和模式識別等領域得到廣泛的應用。
能夠利用pyemd包計算EMD演算法是利用線性規劃來解決的。EMD的主要思想是找到從基礎建築材料把一個分布變成另一個的最小成本方法。
Pyemd包不僅能計算EMD還能計算對稱Kullback-Leibler距離,針對Kullback-Leibler距離的一些擴展也可以通過使用Pyemd包實現。
二、Pyemd用法
1、安裝Pyemd包
pip install pyemd2、調用Pyemd包
首先從pyemd中導入emd包,由於EMD演算法採用線性規劃,因此必須安裝有線性規劃包lpsolve或者是cvxopt
from pyemd import emd
import numpy as np3、使用Pyemd包
在使用Pyemd包時,需要定義源分布和目標分布。使用Pyemd包需要數據為numpy數組格式,我們可以先定義兩個列表作為源分布和目標分布。
source_distribution = np.array([0.0, 0.5, 0.2, 0.0, 0.3])
target_distribution = np.array([0.3, 0.2, 0.2, 0.2, 0.1])定義兩組數據源distribution_1和distribution_2,如下所示:
distribution_1 = np.array([0.2, 0.3, 0.1, 0.4])
distribution_2 = np.array([0.1, 0.5, 0.2, 0.2])接下來就可以使用pyemd計算源分布和目標分布之間的EMD,如下所示:
emd(source_distribution, target_distribution, normalize=True)輸出結果:0.34000000000000014
如果您願意,可以通過在normalize參數中傳遞False來獲得非標準ETD的未規範化演算法,但大多數情況下最好保留它。在下面的示例中,另一個EMD函數將使用shuffle,它可以將源分布重新排序以匹配與目標分布的最小成本。
emd(
distribution_1,
distribution_2,
distance_matrix=distance_matrix,
normalize=True
)輸出結果:1.1800000000000002
三、Pyemd小結
本文介紹了Pyemd包是一個Python包,用於計算文本或向量之間的差異度分數,它採用線性規劃方法來計算EMD演算法,並可以通過numpy數組格式來計算源分布和目標分布之間的差異度分數,其演算法已經在計算機視覺、自然語言處理和模式識別等領域得到廣泛的應用,幫助用戶快速計算並評估數據間的相似度與差異度。
原創文章,作者:JEQU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142021.html
微信掃一掃
支付寶掃一掃