小编sop*_*ros的帖子

如何通过文件元数据从GridFS中删除图像文件?

我有一个包含以下元数据的图像:

> db.fs.files.find().pretty()
{
    "_id" : ObjectId("4576874577342672346"),
    "chunkSize" : 262144,
    "user_name" : "my name",
    "filename" : "image.jpg",
    "length" : 7103,
    "uploadDate" : ISODate("2014-01-23T13:31:48.155Z"),
    "user_email" : "email@email.com",
    "md5" : "1234567890"
}
>
Run Code Online (Sandbox Code Playgroud)

我想从 Python (PyMongo) 中删除图像。

上的文档delete()似乎规定该delete()函数中唯一接受的参数是file_id

http://api.mongodb.org/python/current/api/gridfs/#gridfs.GridFS.delete

以编程方式,我有以下可以在文件元数据中匹配的值:

  • 用户名
  • 文档名称
  • 用户邮箱

我该如何:

  • 获取file_id(必要时通过使用上述值)或
  • 删除基于元数据字段以外的文件file_id

此外,我目前仅使用单个块文件进行测试,如果将来与更大的文件交互是否会删除file_id或其他元数据也会删除所有关联的块?

python mongodb pymongo gridfs

5
推荐指数
1
解决办法
6215
查看次数

PyMC:估计总体参数,其中每个观测值是两个Weibull分布变量的总和

我有一个n个观察列表,每个观察值是两个Weibull分布式变量的总和:

x[i] = t1[i] + t2[i]
t1[i] ~ Weibull(shape1, scale1)
t2[i] ~ Weibull(shape2, scale2)
Run Code Online (Sandbox Code Playgroud)

我的目标是:

1)估计威布尔分布(shape1,scale1,shape2,scale2)的形状和比例参数,

2)对于每个观测值x [i],估计t1 [i](并且t2 [i]由此得出).

(旁白:每次观察x [i]是癌症诊断的年龄,t1 [i]和t2 [i]是肿瘤发展的两个不同时期.实际模型也涉及突变数据,但在此之前尝试一下,我想确保我可以使用PyMC来解决这个更简单的问题.)

我正在使用PyMC2进行这些估算,看起来运行会收敛,但结果不正确.我不知道我的PyMC模型语法,MCMC设置或两者都有问题.我试着适应这个建议使用电位潜变量模型.首先,我为每个观察定义x [i]和t1 [i]:

for i in xrange(n):
    x[i] = pm.Index('x_%i'%i, x=data, index=i) # data is a list of observations
    t1[i] = pm.Weibull('t1_%i'%i, alpha=shape1, beta=scale1)
    # Ensure that initial guess for t1 is not more than the observed sum:
    if t1[i].value >= x[i].value:
        t1[i].value = 0.95 * x[i].value
Run Code Online (Sandbox Code Playgroud)

然后我为t2 [i] = x [i] …

python mcmc pymc probabilistic-programming

5
推荐指数
0
解决办法
252
查看次数

如何在 Julia 中加载 UTF16 编码的文本文件?

我有一个文本文件(很确定)是用 UTF16 编码的,但我不知道如何在 Julia 中加载它。我是否必须将它作为字节加载然后转换为UTF16String

unicode encoding julia

5
推荐指数
1
解决办法
543
查看次数

队列对象只能通过继承在进程之间共享

我有两个 python 类,它们共享一个基类,假设定义了一个 multiprocessing.Queue。

这些类中的每一个都将在单独的子进程上启动,并且需要通过队列共享信息。

现在,如果基类定义了一个队列,那么每个子类对象将实例化它自己的队列,从而无法共享队列元素。但话又说回来,我发现这记录

Queue objects should only be shared between processes through inheritance. 
Run Code Online (Sandbox Code Playgroud)

那么在子进程之间共享队列的正确方法是什么,上面的句子甚至如何有意义?

请注意,我显然可以在子进程初始化时传递对队列的引用,但我想使用继承来解决这个问题

python queue python-multiprocessing

5
推荐指数
1
解决办法
5522
查看次数

如何使用pymc参数化概率图模型?

如何使用pymc参数化概率图形模型?

假设我有两个节点的PGM XY.让我们说X->Y是图表.

并且X采用两个值{0,1},并且 Y还采用两个值{0,1}.

我想使用pymc来学习分布的参数,并用它来填充图形模型以进行推理.

我能想到的方式如下:

X_p = pm.Uniform("X_p", 0, 1)
X = pm.Bernoulli("X", X_p, values=X_Vals, observed=True)
Y0_p = pm.Uniform("Y0_p", 0, 1)
Y0 = pm.Bernoulli("Y0", Y0_p, values=Y0Vals, observed=True)
Y1_p = pm.Uniform("Y1_p", 0, 1)
Y1 = pm.Bernoulli("Y1", Y1_p, values=Y1Vals, observed=True)
Run Code Online (Sandbox Code Playgroud)

这里Y0ValsY对应于X值= 0 Y1Vals的值,并且是Y对应于X值= 1的值.

计划是从这些中抽取MCMC样本,并使用Y0_pY1_p 填充离散贝叶斯网络的概率...所以概率表适用P(X) = (X_p,1-X_p)P(Y/X):

  Y  0 …
Run Code Online (Sandbox Code Playgroud)

bayesian-networks pymc pymc3 probabilistic-programming

5
推荐指数
0
解决办法
414
查看次数

在ipython笔记本上导入imblearn python包的问题

我安装https://github.com/glemaitre/imbalanced-learn使用上的Windows PowerShell pip install,condagithub.但当我在iPython笔记本上时,我尝试使用以下方法导入包:

from unbalanced_dataset import UnderSampler, OverSampler, SMOTE
Run Code Online (Sandbox Code Playgroud)

我收到错误:


ImportError  Traceback (most recent call last) <ipython-input-9-ad6fd7440a05> in <module>()
----> 1 from imbalanced_learn import UnderSampler, OverSampler, SMOTE

ImportError: No module named imbalanced_learn
Run Code Online (Sandbox Code Playgroud)

使用Windows for Python的新手,我是否必须在某个文件夹中安装该软件包?

python powershell python-2.7 jupyter-notebook imblearn

5
推荐指数
2
解决办法
3万
查看次数

PyMC:多个时间序列的观察结果(来自“贝叶斯黑客方法”的文本消息示例的改编)

我正在尝试改编Cameron Davidson-Pilon的贝叶斯黑客方法,第1章“介绍我们的第一把锤子:PyMC”中的文本消息示例, 以处理多种观察结果。下面的解决方案似乎正在工作,但是我对pymc并不陌生,我不确定这是否是处理pymc中多个时间序列观测值的好方法。任何建议将不胜感激!

为了重述贝叶斯黑客方法的文本消息示例,观察结果包括74天的文本消息计数,如下图所示。

在此处输入图片说明

该书使用一个切换点参数(tau)和两个指数参数(lambda1和lambda2)对该过程进行建模,这两个参数分别控制tau前后的泊松分布消息数。对于此示例,pymc使用以下代码产生大约为tau = 45,lambda1 = 18和lambda2 = 23的解决方案,该代码与本书的代码几乎相同:

import numpy as np
import pymc

observation = np.loadtxt( './txtdata.csv' ) #data available at the book's GitHub site
n_days      = observation.size    #number of days
alpha       = 1./20  #assume a mean of 20 messages per day
lambda1     = pymc.Exponential("lambda1", alpha)
lambda2     = pymc.Exponential("lambda2", alpha)
tau         = pymc.DiscreteUniform("tau", lower=0, upper=n_days)

@pymc.deterministic
def lambda_(tau=tau, lambda1=lambda1, lambda2=lambda2):
    a       = np.zeros(n_days)
    a[:tau] = lambda1
    a[tau:] = lambda2
    return a
observation_model  = pymc.Poisson("observation", …
Run Code Online (Sandbox Code Playgroud)

python time-series bayesian pymc probabilistic-programming

5
推荐指数
0
解决办法
510
查看次数

断言错误:通过了 22 列,传递的数据有 21 列

这是我的代码:

from urllib import urlopen
from bs4 import BeautifulSoup
import pandas as pd

url = "http://www.basketball-reference.com/draft/NBA_2014.html"
html = urlopen(url)
soup = BeautifulSoup(html)
column_headers = [th.getText() for th in soup.findAll('tr',limit=2)[1].findAll('th')]
data_rows = soup.findAll('tr')[2:]
player_data = [[td.getText() for td in data_rows[i].findAll('td')] for i in range(len(data_rows))] #PLAYER DATA 

type(soup)
type(data_rows)

df = pd.DataFrame(player_data,columns=column_headers)
Run Code Online (Sandbox Code Playgroud)

错误似乎发生在最后一行。

python pandas

5
推荐指数
1
解决办法
2万
查看次数

在PYMC3中求解ODE

在这里,我的目的是估算由下式给出的阻尼谐波振荡器的参数(伽马和ω)

dX ^ 2 / dt ^ 2 +γ* dX / dt +(2 * pi * omega)^ 2 * X = 0。(我们可以向系统中添加高斯白噪声。)


 import pymc
 import numpy as np
 import scipy.io as sio
 import matplotlib.pyplot as plt; 
 from scipy.integrate import odeint

 #import data
 xdata = sio.loadmat('T.mat')['T'][0]  #time
 ydata1 = sio.loadmat('V1.mat')['V1'][0]  #  V2=dV1/dt, (X=V1),
 ydata2 = sio.loadmat('V2.mat')['V2'][0]  # dV2/dt=-(2pi*omega)^2*V1-gama*V2

 #time span for solving the equations
 npts= 500   
 dt=0.01
 Tspan=5.0
 time = np.linspace(0,Tspan,npts+1) 

 #initial condition
 V0 = [1.0, 1.0]

# Priors for unknown …
Run Code Online (Sandbox Code Playgroud)

python porting pymc pymc3 probabilistic-programming

5
推荐指数
1
解决办法
650
查看次数

在Sympy打印上实施自定义排序

Sympy做了很好的工作,跟踪我对符号表达式所做的所有操作.但是打印乳胶输出结果的那一刻我想强制执行该术语的某个顺序.这只适用于惯例,不幸的是,该约定在符号名称上不是按字母顺序排列的(合理的同情)

import sympy as sp
sp.init_printing()
U,tp, z, d = sp.symbols('U t_\perp z d')
# do many operations with those symbols
# the final expression is:

z+tp**2+U+U/(z-3*tp)+d
Run Code Online (Sandbox Code Playgroud)

我的问题是SymPy将表达式表示为

U + U/(-3*t_\perp + z) + d + t_\perp**2 + z
Run Code Online (Sandbox Code Playgroud)

但这种排序不是我所在领域的惯例.对于我们来说,z必须是最左边的表达式,然后是tp,然后是U,即使它是大写的,d是最不相关的,并且放在右边.所有这些变量都具有特定的含义,这就是我们按照这样的顺序编写它们的原因,并且代码变量中的原因以这种方式命名.

我不想将z重命名为a并按照Prevent Sympy中的建议重新排列等式,然后在打印时将a转换为z.在Python中 - SymPy - 强制SymPy保持顺序有一个提示我可以写一个排序函数但我找不到有关它的文档.

python sympy

5
推荐指数
1
解决办法
235
查看次数