Python中的贝叶斯推理

时间:2017-01-23 09:25:38

标签: python

我试图在python中的两个数据集之间执行贝叶斯推理,例如

x = [9, 11, 12, 4, 56, 32, 45], y = [23, 56, 78, 13, 27, 49, 89]

我查看了大量的文档页面,发现pymc https://pymc-devs.github.io/pymc/modelfitting.html#markov-chain-monte-carlo-the-mcmc-class和bayespy http://bayespy.org/en/latest/examples/gmm.html可能是我最好的赌注,但文档难以置信。

我试图预测y的值是什么,取决于x的值和两个数据集之间的相关强度。

提前致谢,

最高

1 个答案:

答案 0 :(得分:0)

Markov链是序列,序列中项目的概率取决于它们的前辈。

假设你有一个很长的列表x,包含数字。 您可以定义每个数字取决于它之前的两个数字。然后训练一个模型:

  • 输入是两位数
  • 输出是概率的向量:对于每个数字,接下来的可能性有多大。

您可以使用此模型生成新序列: 从两位数开始。然后使用该模型预测下一个数字的概率,选择最可能的数字。您始终使用序列中的最后两位数字为模型提供信息,并根据预测添加新数字。

这也可用于判断现有序列的概率。您将逐步完成该序列,查看每个数字并使用您的模型计算该数字的可能性,给出其前身。

这里的关键部分是模型。为了使用它,您需要使用现有数据进行训练。对于序列,最常见的示例是文本中的字符。您可以根据前面的字符训练模型以预测下一个字符。例如(这里模型看到3个前面的字符):

  • "赫尔" - > " L"概率很高
  • " ELL" - > " O"概率很高

字符之间的依赖关系非常复杂,只需考虑可能的输入序列的数量。理想情况下,模型应该在训练期间的某个时刻看到所有这些序列。当然这是不可能的,但要获得好的结果,你需要尽可能多的训练数据。

如果您希望我们回答您的问题,我们需要更多详细信息。

  1. 有关数据集的准确信息
  2. 有关您尝试建模的流程的信息。
  3.   

    所以每个国家有20个国家和16个数据集。我正在研究这16个数据集中的每一个如何相互影响,因此数据集1如何影响数据集2,2如何影响3,3如何影响1等

    所以数据集对彼此有一些影响吗?

    然后你说:

      

    来自其他集合的预测在预测其他集合方面确实没有用处

    这没有意义。 您无法使用如此少的数据进行序列建模。如果数据集没有结构,如果你不能通过查看整体来学习一般模式,那么在比较各个对时就不会有任何用处。