Я пытаюсь оптимизировать функцию с помощью scipy.optimize.minimize, но я не могу понять, что куда идет, в качестве альтернативы получаю сообщения об ошибках "ValueError: установка элемента массива с последовательностью " или " TypeError: llf () принимает 1 позиционный аргумент, но было дано 2 "
Мой код следующий:
import numpy as np
import pandas as pd
u = np.random.normal(0, 1, 50)
t = 25
x = t*u/(1-u)
x = np.sort(x, axis=0)
theta = list(range(1, 1001, 1))
theta = np.divide(theta, 10)
xv, tv = np.meshgrid(x, theta)
xt_sum = xv + tv # Each *theta* has been added to all values of *x*
xt_sum_inv = 1/xt_sum
xt_sum_n = np.sum(xt_sum_inv, axis=1) # This is a length 1000 vector where each entry is equal to sum(1/(theta + x))
def llf(arg):
return (-1 * (50/arg - 2 * xt_sum_n))
res = scipy.optimize.minimize(llf, theta, method='BFGS')
theta - это то, для чего я пытаюсь оптимизировать.
Я чувствую, что либо мои позиционные аргументы неверны, либо мои переменные или выходные данные функции имеют неправильную структуру данных. Любая помощь приветствуется.