📜  Python中的卡方距离

📅  最后修改于: 2022-05-13 01:54:57.711000             🧑  作者: Mango

Python中的卡方距离

卡方距离计算是一种统计方法,通常测量 2 个特征矩阵之间的相似度。这样的距离通常用于许多应用,如相似图像检索、图像纹理、特征提取等。 2 个数组 'x' 和 'y' 与 'n' 维的卡方距离使用以下公式进行数学计算:

在本文中,我们将学习如何使用Python计算卡方距离。下面给出了计算卡方距离的 2 种不同方法。让我们用例子来看看它们。
方法#1:使用上述公式手动计算卡方距离。

Python3
# importing numpy library
import numpy as np
 
# Function to calculate Chi-distance
def chi2_distance(A, B):
 
    # compute the chi-squared distance using above formula
    chi = 0.5 * np.sum([((a - b) ** 2) / (a + b)
                      for (a, b) in zip(A, B)])
 
    return chi
 
# main function
if __name__== "__main__":
    a = [1, 2, 13, 5, 45, 23]
    b = [67, 90, 18, 79, 24, 98]
 
    result = chi2_distance(a, b)
    print("The Chi-square distance is :", result)


Python3
# importing scipy
from scipy.stats import chisquare
 
k = [3, 4, 6, 2, 9, 5, 2]
print(chisquare(k))


Input : a = [1, 2, 13, 5, 45, 23]
        b = [67, 90, 18, 79, 24, 98] 
Output : The Chi-square distance is : 133.55428601494035

Input : a = [91, 900, 78, 30, 602, 813]
        b = [57, 49, 36, 759, 234, 928]
Output :  The Chi-square distance is : 814.776999405035

方法#2:使用 scipy.stats.chisquare() 方法

Python3

# importing scipy
from scipy.stats import chisquare
 
k = [3, 4, 6, 2, 9, 5, 2]
print(chisquare(k))

输出 :

Power_divergenceResult(statistic=8.516129032258064, pvalue=0.20267440425509237)