Я пытаюсь подогнать свою модель к некоторым данным, которые у меня есть, используя 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
Подгонка модели к данным с использованием Curve_fit в Python ⇐ Python
Программы на Python
-
Anonymous
1769818661
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'
Подробнее здесь: [url]https://stackoverflow.com/questions/79878768/fitting-model-to-data-using-curve-fit-in-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия