Как решить AttributeError: объект 'list' не имеет атрибута 'ниже в scipy минимизировать - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь использовать scipy минимизацию, чтобы найти лучшие значения для r, p, K и alpha

from scipy.optimize import minimize

def f(Y,t,params):
    r, p, K, alpha = params
    return r * (Y ** p) * (1 - (Y / K) ** alpha)

t = np.linspace(0, len(df), len(df))
y0=1
initial_guess = [0.5, 0.5, 200000,0.7]

# result = minimize(f,initial_guess) #I used this one first but I got an error (TypeError: f() missing 2 required positional arguments: 't' and 'params') so I changed this one to the one below (I added y0 and t)

result = minimize(f, y0,t,initial_guess)

Однако это возвращает ошибку AttributeError: объект 'list' не имеет атрибута 'lower' , ниже - вся полученная мной ошибка

AttributeError                            Traceback (most recent call last)
<ipython-input-46-2930fc38c1cc> in <module>()
      9 initial_guess = [0.5, 0.5, 200000,0.7]
     10 
---> 11 result = minimize(f, y0,t,initial_guess)

/home/lenovo/.local/lib/python3.7/site-packages/scipy/optimize/_minimize.py in minimize(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)
    496         meth = "_custom"
    497     else:
--> 498         meth = method.lower()
    499 
    500     if options is None:

AttributeError: 'list' object has no attribute 'lower'

Как я могу решить эту ошибку?

1 Ответ

1 голос
/ 13 июля 2020
scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)[source]

minimize(f, y0,t,initial_guess)

аргументы сопряжения

fun -- f
x0  -- y0
args -- t
method -- initial_guess        # problem

Вы предоставляете список чисел в качестве параметра method!

Ваш fun должен иметь подпись: fun(x, *args) . x будет массивом / числом, изначально равным x0. Это значение minimize меняется при поиске. args должен быть кортежем (люди часто ошибаются). minimize просто пропускает их; он не меняет их.

Я не понимаю, какие роли вы собираетесь играть y0, t и initial_guess. И я подозреваю, что вы тоже этого не делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...