[SciPy-User] Problems with optimize.leastsq and curve_fit
Paul Hobson
pmhobson at gmail.com
Tue Mar 19 15:47:02 EDT 2013
I guess I don't quite understand how to use the functions properly since
they're not returning meaningful results on what should be a pretty trivial
linear fit. My initial thought is that they're being tripped up by my `x`
variable not being uniformly spaced.
Consider the following (overly) simplified example:
## start
import numpy as np
import scipy.optimize as opt
x = np.array([ 0. , 0.5, 1. , 2. , 3. , 3.5, 5. , 5.5, 6. ,
6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5, 10. , 11. ,
11.5, 12.5], dtype=np.float32)
y = np.array([ 2.7, 8.6, 9. , 13.8, 16.8, 17.8, 23.24, 25.2,
26.3, 27.1, 27.68, 30.7, 32.9, 32.9, 37.07, 39.5,
40.5, 45.7, 46.76, 50.2], dtype=np.float32)
def lsq_line(params, x, y):
return y - (params[0]*x + params[1])
def cf_line(x, m, b):
return m*x + b
np.polyfit(x, y, 1) # works great
# Out[6]: array([ 3.54965901, 5.09342384], dtype=float32)
opt.leastsq(lsq_line, [3,5], args=(x,y)) # bad
# Out[9]: (array([ 3., 5.]), 4)
opt.curve_fit(cf_line, x, y, p0=[3,5]) # bad
# Out[10]: (array([ 3., 5.]), inf)
## stop
Any thoughts or advice on how to better use these functions would be much
appreciated.
Thanks,
-p
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20130319/906c2b16/attachment.html>
More information about the SciPy-User
mailing list