import numpy as np
import matplotlib.pyplot as plt
# Intialize random number generator
np.random.seed(123)
# True parameter values
alpha, sigma = 1, 1
beta = [1, 2.5]
# Size of dataset
size = 100
# Predictor variable
X1 = np.linspace(0, 1, size)
X2 = np.linspace(0,0.2, size)
# Simulate outcome variable
Y = alpha + beta[0]*X1 + beta[1]*X2 + np.random.randn(size)*sigma
from pymc3 import Model, Normal, HalfNormal
basic_model = Model()
basic_model = Model()
with basic_model:
# Priors for unknown model parameters
alpha = Normal('alpha', mu=0, sd=10)
beta = Normal('beta', mu=0, sd=10, shape=2)
sigma = HalfNormal('sigma', sd=1)
# Expected value of outcome
mu = alpha + beta[0]*X1 + beta[1]*X2
# Likelihood (sampling distribution) of observations
Y_obs = Normal('Y_obs', mu=mu, sd=sigma, observed=Y)
,
from scipy import optimize
map_estimate = find_MAP(model=basic_model, fmin=optimize.fmin_powell)
print(map_estimate)
错误提示为:
TypeError Traceback (most recent call last) <ipython-input-37-91a861868506> in <module> 3 # obtain starting values via MAP 4 #start = find_MAP() ----> 5 start = find_MAP(fmin=optimize.fmin_powell) 6 # instantiate sampler 7 step = NUTS(scaling=start) ~\anaconda3\lib\site-packages\pymc3\tuning\starting.py in find_MAP(start, vars, method, return_raw, include_transformed, progressbar, maxeval, model, *args, **kwargs) 133 134 try: --> 135 opt_result = minimize(cost_func, x0, method=method, jac=compute_gradient, *args, **kwargs) 136 mx0 = opt_result["x"] # r -> opt_result 137 except (KeyboardInterrupt, StopIteration) as e: TypeError: minimize() got an unexpected keyword argument 'fmin'
等待回答。
fmin
参数现在已经换成了method
参数,但是带进去还是有bug,其实可以这个去掉这个优化器指定,就可以运行了