我有一个包含以下元数据的图像:
> 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或其他元数据也会删除所有关联的块?
我有一个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] …
我有一个文本文件(很确定)是用 UTF16 编码的,但我不知道如何在 Julia 中加载它。我是否必须将它作为字节加载然后转换为UTF16String?
我有两个 python 类,它们共享一个基类,假设定义了一个 multiprocessing.Queue。
这些类中的每一个都将在单独的子进程上启动,并且需要通过队列共享信息。
现在,如果基类定义了一个队列,那么每个子类对象将实例化它自己的队列,从而无法共享队列元素。但话又说回来,我发现这记录
Queue objects should only be shared between processes through inheritance.
Run Code Online (Sandbox Code Playgroud)
那么在子进程之间共享队列的正确方法是什么,上面的句子甚至如何有意义?
请注意,我显然可以在子进程初始化时传递对队列的引用,但我想使用继承来解决这个问题
如何使用pymc参数化概率图形模型?
假设我有两个节点的PGM X和Y.让我们说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)
这里Y0Vals是Y对应于X值= 0 Y1Vals的值,并且是Y对应于X值= 1的值.
计划是从这些中抽取MCMC样本,并使用Y0_p和Y1_p
填充离散贝叶斯网络的概率...所以概率表适用P(X) = (X_p,1-X_p)于P(Y/X):
Y 0 …Run Code Online (Sandbox Code Playgroud) 我安装https://github.com/glemaitre/imbalanced-learn使用上的Windows PowerShell pip install,conda和github.但当我在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的新手,我是否必须在某个文件夹中安装该软件包?
我正在尝试改编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) 这是我的代码:
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)
错误似乎发生在最后一行。
在这里,我的目的是估算由下式给出的阻尼谐波振荡器的参数(伽马和ω)
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) 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保持顺序有一个提示我可以写一个排序函数但我找不到有关它的文档.