scipy 优化中的位置参数缺失错误

Positional argument missing error in scipy optimize

我想使用 scipy 获得 mu 和 sigma 中以下函数的最大估计值,其中 s 定义为样本

s = np.random.normal(mu, sigma, 100)

def f(mu, sigma):
  x = norm.pdf(s,mu,sigma)
  x = np.prod(x)
  x = np.log(x)
  return x

我试过了

x0 = [0,1]


bounds = [(-5,5),(-5,5)]

print(optimize.minimize(f, x0, method='SLSQP', bounds=bounds))

但不断收到错误消息:

f() missing 1 required positional argument: 'sigma'

我不确定这里发生了什么

您需要将参数作为向量传递给 f

def f(z):
  mu, sigma = z
  x = norm.pdf(s,mu,sigma)
  x = np.prod(x)
  x = np.log(x)
  return x