小编Pau*_*aul的帖子

PYMC3贝叶斯预测锥

我仍在学习PYMC3,但是我在文档中找不到以下问题的任何内容。考虑这个问题的贝叶斯结构时间序列(BSTS)模型,没有季节性。可以在PYMC3中对其进行建模,如下所示:

import pymc3, numpy, matplotlib.pyplot
# generate some test data
t = numpy.linspace(0,2*numpy.pi,100)
y_full = numpy.cos(5*t)
y_train = y_full[:90]
y_test = y_full[90:]

# specify the model
with pymc3.Model() as model:
  grw = pymc3.GaussianRandomWalk('grw',mu=0,sd=1,shape=y_train.size)
  y = pymc3.Normal('y',mu=grw,sd=1,observed=y_train)
  trace = pymc3.sample(1000)
  y_mean_pred = pymc3.sample_ppc(trace,samples=1000,model=model)['y'].mean(axis=0)

  fig = matplotlib.pyplot.figure(dpi=100)
  ax = fig.add_subplot(111)
  ax.plot(t,y_full,c='b')
  ax.plot(t[:90],y_mean_pred,c='r')
  matplotlib.pyplot.show()
Run Code Online (Sandbox Code Playgroud)

现在,我想预测接下来10个时间步的行为,即y_test。我还想在此区域包括产生贝叶斯锥的可靠区域,例如,请参见此处。不幸的是,在上述连接中产生锥体的机构有点模糊。在更传统的AR模型中,人们可以学习平均回归系数并手动扩展平均曲线。但是,在此BSTS模型中,没有明显的方法来执行此操作。或者,如果存在回归变量,则可以使用theano.shared并使用更细/扩展的网格对其进行更新,以使用sample_ppc进行插补和推断,但这在此设置中并不是真正的选择。也许sample_ppc在这里是个红鲱鱼,但尚不清楚如何进行其他操作。任何帮助都将受到欢迎。

python bayesian pymc pymc3

7
推荐指数
1
解决办法
676
查看次数

Redis 慢查询与流水线 hgetall

所以我有一个小而简单的Redis数据库。它包含 136689 个键,其值是包含 27 个字段的哈希映射。我正在通过服务器节点上的 Python 接口访问该表,并且每次调用需要加载大约 1000-1500 个值(最终我将看到每秒大约 10 个请求)。一个简单的调用看起来像这样:

# below keys is a list of approximately 1000 integers, 
# not all of which are in the table

import redis
db = redis.StrictRedis(
  host='127.0.0.1',
  port=6379,
  db=0,
  socket_timeout=1,
  socket_connection_timeout=1,
  decode_responses=True
)

with db.pipeline() as pipe:
  for key in keys: 
    pipe.hgetall(key)
  results = zip(keys,pipe.execute())
Run Code Online (Sandbox Code Playgroud)

总时间约为 328 毫秒,每个请求的平均时间约为 0.25 毫秒。

问题:这对于小型数据库来说非常慢,每秒查询次数相对较少。我的配置或我调用服务器的方式有问题吗?可以做些什么来加快速度吗?我不希望桌子变得更大,所以我很高兴为了速度而牺牲磁盘空间。


附加信息

调用hget每个键(没有管道)较慢(如预期)并显示时间分布是双峰的。较小的峰值对应于不在表中的键,而较大的峰值对应于表中的键。

Redis 响应时间分布

我的conf文件如下:

port 6379
daemonize yes 
save ""
bind 127.0.0.1
tcp-keepalive 300 
dbfilename mytable.rdb
dir . …
Run Code Online (Sandbox Code Playgroud)

python performance database-performance query-performance redis

7
推荐指数
1
解决办法
2089
查看次数

PYMC3季节变量

我是比较新的PYMC3,我试图实现贝叶斯结构时间序列(BSTS)没有回归系数,比如模型拟合这里在R.模型如下:

模型

我可以使用GaussianRandomWalk来实现局部线性趋势,如下所示:

delta = pymc3.GaussianRandomWalk('delta',mu=0,sd=1,shape=99)
mu = pymc3.GaussianRandomWalk('mu',mu=delta,sd=1,shape=100)
Run Code Online (Sandbox Code Playgroud)

但是,我对如何在PYMC3中编码季节性变量(tau)感到困惑。我是否需要参加自定义的随机游走课程,还是有其他技巧?

python bayesian pymc pymc3

6
推荐指数
1
解决办法
578
查看次数