#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 — количество точек примера (строк). Итак, я считаю, что из-за того, что ваше количество строк меньше количества функций, модель испытывает трудности с подгонкой кривой.