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() 方法
Syntax: scipy.stats.chisquare(f_obs, f_exp=None, ddof=0, axis=0)
Parameters:
==> f_obs : array1
==> f_exp : array2, optional
==> ddof(Delta degrees of freedom – adjustment for p-value) : int, optional
==> axis : int or None, optional
The default value of ddof and axis is 0.
Returns:
==> chisq : float or ndarray
==> p-value of the test : float or ndarray
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)