подгонка многомерной curve_fit в python (логистическая функция)

#python #scipy #curve-fitting #scipy-optimize

#python #scipy #подгонка кривой #scipy-оптимизация

Вопрос:

Я подгоняю логистическую функцию к форме X: (5,2)

 def logifunc(x,A,x0,k):
     return A / (1   np.exp(-k*(x-x0)))

popt, pcov = curve_fit(logifunc, X, y)
  

Мой X равен:

 array([[ 0.000e 00,  1.000e 00,  2.000e 00,  3.000e 00,  4.000e 00],
       [-1.000e 00,  5.480e 02,  6.430e 02,  9.200e 02,  1.406e 03]])
  

y — это:

 array([ 548.,  643.,  920., 1406., 2075.])
  

Я получил сообщение об ошибке:

 TypeError                                 Traceback (most recent call last)
<ipython-input-68-acf83ee46c52> in <module>()
     14 X = np.vstack((t.ravel(), np.array(P).ravel()))
     15 
---> 16 popt, pcov = curve_fit(logifunc, X, y)

1 frames
/usr/local/lib/python3.6/dist-packages/scipy/optimize/minpack.py in leastsq(func, x0, args, Dfun, full_output, col_deriv, ftol, xtol, gtol, maxfev, epsfcn, factor, diag)
    390 
    391     if n > m:
--> 392         raise TypeError('Improper input: N=%s must not exceed M=%s' % (n, m))
    393 
    394     if epsfcn is None:

TypeError: Improper input: N=3 must not exceed M=2
  

Я не уверен, как устранить эту ошибку.

Ответ №1:

Как правило, N — это количество объектов, а M — количество точек примера (строк). Итак, я считаю, что из-за того, что ваше количество строк меньше количества функций, модель испытывает трудности с подгонкой кривой.