OptimizeWarning от SciPy's optimize_curve не может быть исправлено - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь подобрать набор (в моем случае общее кумулятивное количество случаев) данных, касающихся распространяющегося в настоящее время вируса, с помощью SciPy's optimize_curve. Как и следовало ожидать, исходные данные растут в геометрической прогрессии, как показано на моем следующем графике: Data showing virus evolution ------> (Красные случаи смерти, желтые - в настоящее время активные случаи, синие - выздоровление, зеленый разброс - в настоящее время дома изолированы).
Конечно, мы ожидаем, что в первую очередь будет наблюдаться пик в общем числе случаев, и затем график будет расти логарифмически. Это поведение хорошо описывается сигмовидной функцией Sigmoid Function, к которой я добавил параметры a, b, c, так что подгонка получится немного более точной, определив функции Eq1 или Eq2.
Единственное, чего я не могу понять, это то, что с помощью первой сигмоидальной функции она позволила мне нарисовать подбор с несколькими параметрами (в противном случае я получил: OptimizeWarning: Covariance из параметров не может быть оценена, категория = OptimizeWarning), в то время как для второй сигмоидальной функции это дает мне ошибку для любого параметра. Я также попробовал некоторые другие сигмоидоподобные функции, такие как tanh (b + cx) и функцию error, но также выдает одно и то же предупреждение для каждого параметра. Все функции векторизованы с использованием Numpy np.vectorize(function), чтобы вместо этого ввести список.

def FitSigmoidea(x,a,b,c):
    return a * math.exp(b+c*x) / 1+math.exp(b+c*x)
def FitError(x,a,b,c):
    return a*math.erf(b*(x-c))
def FitHypTan(x,a,b,c):
    return a*math.tanh(b*(x-c))

MyFitSigmoidea = np.vectorize(FitSigmoidea)
init_par_sigmo = [10,-83,4]
params, params_covariance = optimize.curve_fit(MyFitSigmoidea, days , bars , p0 = init_par_sigmo)
#days is a python list from 1 to 35, bars is a python list of total virus cases
plt.plot(days,MyFitSigmoidea(days,params[0],params[1],params[2]),color='#F000FF' ,label = 'Sigmoid Fit')

Почему эта ошибка возникает каждый раз? Заранее спасибо всем, кто помогает!

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