Подгонка модели к данным с использованием Curve_fit в PythonPython

Программы на Python
Ответить
Anonymous
 Подгонка модели к данным с использованием Curve_fit в Python

Сообщение Anonymous »

Я пытаюсь подогнать свою модель к некоторым данным, которые у меня есть, используя Curve_fit в Python.
Для начала я импортировал следующее:
import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.optimize import curve_fit

Вот данные, которым я хочу подогнать свою модель
Es_pop=[16000,15000, 15000, 14000,14000,13000,14000,14000,14000]
time_2015_to_2023=[0,1,2,3,4,5,6,7,8]

Затем я определил функцию для своей модели следующим образом:
def Tb1_model( y, t, Lambda, beta, mu, gamma, tau, w, alpha, Gamma, pi):
S, E, I, T, R=y
dS_dt = Lambda - beta*I*S - mu*S
dE_dt = beta*I*S - (gamma + tau + mu)*E
dI_dt = gamma*E + w*R - (alpha + Gamma + mu)*I
dT_dt = alpha*I + tau*E - ( mu + pi)*T
dR_dt = pi*T -(w + mu)*R

return([dS_dt,dE_dt,dI_dt,dT_dt,dR_dt])

Затем я написал еще одну функцию для решения дифференциальных уравнений в приведенной выше функции и возврата решения для dE_dt только следующим образом:
def Solve_Tb1_model(y0,t,Lambda, beta, mu, gamma, tau, w, alpha,Gamma, pi):
y0 = S0,E0,I0,T0,R0
solution = scipy.integrate.odeint(Tb1_model, y0,t, args= (Lambda, beta, mu, gamma, tau, w, alpha,Gamma,pi) )
return(solution[:,1])

Затем я попробовал подогнать следующим образом:
param_opt, param_covar= curve_fit(Solve_Tb1_model,time_2015_to_2023,Es_pop,p0=[55730,0.00062,0.0174,0.5,0.37,0.7,0.37,0.00068,0.8])

Когда я запускаю последний код, я получаю это сообщение об ошибке
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[153], line 1
----> 1 param_opt, param_covar= curve_fit(Solve_Tb1_model,time_2015_to_2023,Es_pop,p0=[55730,0.00062,0.0174,0.5,0.37,0.7,0.37,0.00068,0.8])

File /opt/conda/envs/anaconda-panel-2023.05-py310/lib/python3.11/site-packages/scipy/optimize/_minpack_py.py:963, in curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma, check_finite, bounds, method, jac, full_output, nan_policy, **kwargs)
960 if ydata.size != 1 and n > ydata.size:
961 raise TypeError(f"The number of func parameters={n} must not"
962 f" exceed the number of data points={ydata.size}")
--> 963 res = leastsq(func, p0, Dfun=jac, full_output=1, **kwargs)
964 popt, pcov, infodict, errmsg, ier = res
965 ysize = len(infodict['fvec'])

File /opt/conda/envs/anaconda-panel-2023.05-py310/lib/python3.11/site-packages/scipy/optimize/_minpack_py.py:415, in leastsq(func, x0, args, Dfun, full_output, col_deriv, ftol, xtol, gtol, maxfev, epsfcn, factor, diag)
413 if not isinstance(args, tuple):
414 args = (args,)
--> 415 shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
416 m = shape[0]
418 if n > m:

File /opt/conda/envs/anaconda-panel-2023.05-py310/lib/python3.11/site-packages/scipy/optimize/_minpack_py.py:25, in _check_func(checker, argname, thefunc, x0, args, numinputs, output_shape)
23 def _check_func(checker, argname, thefunc, x0, args, numinputs,
24 output_shape=None):
---> 25 res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
26 if (output_shape is not None) and (shape(res) != output_shape):
27 if (output_shape[0] != 1):

File /opt/conda/envs/anaconda-panel-2023.05-py310/lib/python3.11/site-packages/scipy/optimize/_minpack_py.py:507, in _lightweight_memoizer.._memoized_func(params)
504 if np.all(_memoized_func.last_params == params):
505 return _memoized_func.last_val
--> 507 val = f(params)
509 if _memoized_func.last_params is None:
510 _memoized_func.last_params = np.copy(params)

File /opt/conda/envs/anaconda-panel-2023.05-py310/lib/python3.11/site-packages/scipy/optimize/_minpack_py.py:523, in _wrap_func..func_wrapped(params)
522 def func_wrapped(params):
--> 523 return func(xdata, *params) - ydata

TypeError: Solve_Tb1_model() missing 1 required positional argument: 'pi'


Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»