Python中的成对Kullback-Leibler(或jenshannon)发散距离矩阵

2024-09-27 02:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个矩阵X和Y(在大多数情况下它们是相似的),现在我要计算所有行之间的成对KL散度,并将它们输出到一个矩阵中。E、 g组:

X = [[0.1, 0.9], [0.8, 0.2]]

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

在Python中已经有一些实现了吗?如果没有,这应该是相当简单的计算。我想要一些矩阵实现,因为我有很多数据,需要尽可能低的运行时间。另外,Jensen-Shannon熵也很好。最终这对我来说会是一个更好的解决方案。在


Tags: 数据函数距离时间情况矩阵解决方案jensen
2条回答

有一个名为dit的新(ish)库已实现JSD,以及相互信息和许多其他距离指标:

import dit
foo = dit.Distribution(['A','B','C'],[0.5,0.5,0.0])
bar = dit.Distribution(['A','B','C'],[0.1,0.0,0.9])
dit.divergences.jensen_shannon_divergence([foo,bar])
0.80499327350549388

医生们可能需要一些工作,但看起来很有希望。在

http://docs.dit.io/en/latest/generalinfo.html#quickstart

注意,KL divergence本质上是p(i)和log(p(i)/Q(i)的点积。因此,一个选项是为P(i)和log(P(i)/Q(i))形成一个numpy数组的列表,每个KL散度对应一行,然后执行点积。在

相关问题 更多 >

    热门问题