Я пытался использовать пакет scipy.optimize для регрессии. Модель функции определена в func с параметрами, названными коэффициентами. Я хочу использовать данные xdata и ydata для изучения параметров с использованием критерия LS.
У меня есть следующая ошибка TypeError: только массивы длины 1 могут быть преобразованы в скаляры Python
from __future__ import division
import numpy
import scipy
from math import exp
import scipy.optimize as optimization
global m0,t0
t0 = 0.25
m0=1
def func(t, coeffs):
a = coeffs[0]
b = coeffs[1]
m = (a/b + m0 )*exp(b*(t-t0))-a/b
return m
# fitting test
x0 = numpy.array([5, -5], dtype=float)
def residuals(coeffs, y, t):
return y - func(t, coeffs)
xdata = numpy.array([0.25,0.5,1])
ydata = numpy.array([1.0,0.803265329856,0.611565080074])
from scipy.optimize import leastsq
x = leastsq(residuals, x0, args=(ydata, xdata))
возвращаемые параметры ожидаются около [2, -1].