仅用numpy实现Hellinger距离

gijlo24d  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(118)

我的任务是用NumPy实现一个python函数。这个函数应该计算两个矩阵PQ之间的Hellinger距离,这两个矩阵的维数为(n, k)p_iPi行的向量,p_i,jPj列中i行的值。
矩阵的Hellinger距离定义如下:

h_i = i/sqrt(2) * sqrt(sum(j=1,k) of (sqrt(p_i,j)-sqrt(q_i,j))^2)

H是长度为n的向量,h_iH的值i,其中i = 1,...,n。因此,两个矩阵之间的Hellinger距离等于矩阵行之间的Hellinger距离。对于每一行,距离存储在输出向量H中。
现在的任务是实现这个函数(使用NumPy),它将计算上面描述的问题,它将得到两个2D-NumPy数组PQ,并且它应该返回一个正确长度的1D-Numpy数组H
我以前从未与NumPy合作过,所以如果有任何建议,我将非常感激。
我在X1 E1 F1 X上告诉了自己一些信息,但我很想得到任何建议。

zf9nrax1

zf9nrax11#

我发现你需要在某些NumPy函数中使用axis参数(例如np.sum())来告诉NumPy它应该遍历数组的行还是列。return np.sqrt(1/2) * np.sqrt( np.sum((np.sqrt(P) - np.sqrt(Q))**2,axis=1) )和它的工作。
唯一的问题是,它仍然返回负值。这怎么可能,因为减法取2的幂?

相关问题