【发布时间】:2019-08-02 16:51:58
【问题描述】:
我需要将 2D 分布与 KL Divergence 进行比较。我尝试使用scipy.stats.entropy,但返回的是inf。
如何设置 scipy.stats.entropy 以使用 2 个轴并返回一个值?
我试过了:
from scipy.stats import entropy
import pandas as pd
one = pd.read_csv(file_one)
two = pd.read_csv(file_two)
pk = [list(item) for item in zip(one["X"], one["Y"])]
qk = [list(item) for item in zip(two["X"], two["Y"])]
for l in [pk, qk]:
for i in range(len(l)):
for j in range(len(l[i])):
# to confirm that no values are 0
#(will change to a smaller value once inf is not being returned)
if abs(l[i][j]) < 0.1:
l[i][j] = 0.1
print(entropy(pk, qk))
打印:[inf inf]
我真正想要的是一个单一的值,但要开始我需要它停止返回ing
【问题讨论】:
-
你能打印出
pk和qk的范围吗?根据文档中的方程式,两个值都不能为负。还要检查你是否有任何 nans。 -
数据中有负值。如果我将所有值转变为正值,会影响结果吗?
-
如果你有负值那么你实际上没有概率分布并且测试将失败......
-
为什么不以同样的方式展平分布并将其用作某些 KL Divergence 函数的输入?
-
我一直在尝试从完全关闭的数据中获取坐标。我现在要使用直方图,它实际上是概率