经验信息瓶颈

embo的Python项目详细描述


EMBO-经验瓶颈

LicensePyPI versionBuild status

信息瓶颈分析的Python实现 框架[Tishby, Pereira, Bialek 2001],特别是齿轮 对具体的,有限大小的数据集的分析。在

要求

embo需要python3、numpy和{}。在

安装

要安装最新版本,请运行:

pip install embo

(根据您的系统,您可能需要使用pip3而不是{} 在上面的命令中)。在

测试

(需要setuptools)。如果您的 系统,查找安装的test_embo.py脚本的副本 与其余的embo文件一起执行。例如:

^{pr2}$

或者,如果您已经从 源分发运行的根文件夹:

python setup.py test

这应该在embo/test中指定的所有测试中运行。在

使用

信息瓶颈

我们用[Tishby, Pereira, Bialek 2001]表示一个将军 介绍信息瓶颈。简单地说,如果X和Y 是两个随机变量,我们有兴趣找到另一个随机变量 变量M(称为“瓶颈”变量)用于解决 以下优化问题:

最小{p(m | x)}I(m:x)-βI(m:Y)

对于任何β>;0,且其中M被约束为独立于 Y条件为X:

p(x,m,y)=p(x)p(m | x)p(y | x)

直观地说,我们想要找到随机映射p(M | X),它 从X中提取尽可能多的关于Y的信息 忘记所有无关的信息。β是自由参数 这就决定了遗忘无关信息的相对重要性 而不是记住有用的信息。通常,人们对 由I(M:X)和I(M:Y)在 一系列β值的瓶颈问题。这条曲线 给出了压缩和预测的最佳折衷,告诉我们 一个人需要知道的关于X的最小信息量是多少 为了能够准确地预测Y,或者反之亦然,什么 是在给定一定的条件下,预测Y的最大精度 关于X的信息量

使用embo

在embo中,我们假设X和Y的真正联合分布不是 可用,我们只有一套联合经验 观察。我们还假设X和Y都是有限数 离散值。软件包的主要入口是 EmpiricalBottleneck类。在其构造函数中,EmpiricalBottleneck 将X和an的观测值数组作为参数(相等 long)Y的观测值数组,以及其他可选的 参数(有关详细信息,请参阅docstring)。最基本的用途 在这种情况下,用户可以调用 EmpiricalBottleneck对象,它将返回一组β值和 与β相对应的I(M:X)和I(M:Y)的最佳值。这个 然后,通过绘制I(M:Y)与I(M:Y)的图,可以直观地看到最佳的折衷。在

例如:

importnumpyasnpfrommatplotlibimportpyplotaspltfromemboimportEmpiricalBottleneck# data sequencesx=np.array([0,0,0,1,0,1,0,1,0,1])y=np.array([0,1,0,1,0,1,0,1,0,1])# compute the IB bound from the dataI_x,I_y,β=EmpiricalBottleneck(x,y).get_empirical_bottleneck()# plot the optimal compression-prediction boundplt.plot(I_x,I_y)

更多示例

使用合成数据的一个简单示例位于 embo/examples/Basic-Example.ipynb。 一个更有意义的例子位于 embo/examples/Markov-Chains.ipynb, 在这里我们计算过去和 不同马尔可夫链生成的时间序列的未来。在

更多详情

有关详细信息,请参考 empirical_bottleneck和{}。在

作者

embo由Eugenio Piasini、Alexandre Filipowicz和 乔纳森·莱文。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring框架服务单元测试   在Java中遍历hashmaps的hashmap以检索字符串值   如何使用CodeQL检查Java注释是否具有特定属性?   java为什么在Spring Boot中访问此资源而不是登录弹出窗口需要始终获得完全身份验证   处理将多集计数转换为列表的过程   java另一个线性布局,没有出现按钮   eclipse Java映像加载未显示在jar中   java Junit类无法加载基本测试类ApplicationContext   java如何在main中使用my getvalues()方法打印列表   java Sonar,S128:切换案例应该以无条件的“中断”语句结束,而不是继续   java从socket读取字符串错误连接重置错误   java使用新数据刷新任意图表饼图   java通过异步运行lambda访问方法参数   java错误的结果一旦我处理try and catch