Ошибка отсутствия позиционного аргумента в scipy optimize

#scipy #scipy-optimize

#сципи #scipy-оптимизация

Вопрос:

Я хотел получить максимальную оценку для следующей функции в mu и sigma, используя scipy, где 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() отсутствует 1 требуемый позиционный аргумент: «сигма»

Я не совсем понимаю, что здесь происходит

Ответ №1:

Вам нужно передать аргументы в f виде вектора:

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

Комментарии:

1. Это сработало, спасибо!

2. Рад, что это так, пожалуйста, утвердите ответ, если тема закрыта. @пользователь135520