Python中的Pairwise Kullback Leibler(或Jensen-Shannon)发散距离矩阵

fso*_*ety 2 python metrics distance matrix

我有两个矩阵X和Y(在我的大多数情况下它们是相似的)现在我想计算所有行之间的成对KL分歧并将它们输出到矩阵中.例如:

X = [[0.1, 0.9], [0.8, 0.2]]
Run Code Online (Sandbox Code Playgroud)

然后,该函数应该获取kl_divergence(X, X)并计算两个X矩阵的每对行的成对K1发散距离.输出将是2x2矩阵.

在Python中已经有了一些实现吗?如果没有,这应该很容易计算.我想要一些矩阵实现,因为我有很多数据,需要尽可能地保持运行时间.或者,Jensen-Shannon熵也很好.最终这对我来说甚至是更好的解决方案.

jre*_*nie 14

注意,KL散度基本上是P(i)和log(P(i)/ Q(i))的点积.因此,一个选项是为P(i)形成一个numpy数组列表,为log(P(i)/ Q(i))形成另一个数组,每个KL分歧需要计算一行,然后执行点积.