[SciPy-user] optimization question

Matthieu Brucher matthieu.brucher at gmail.com
Wed Jul 4 03:48:03 EDT 2007


2007/7/4, Volker Lorrmann <lorrmann at physik.uni-wuerzburg.de>:
>
> Hi Robert,
>
> > All leastsq() really adds to fmin*() is that you return the residuals
> > instead of summing up the squares of the residuals. You can do that
> > manually and use whichever minimizer you need.
>
> Can you give me a short example, how to do so? I´ve asked this also
> Matthieu, so if he will answer, you probably don´t need to. But two
> examples would be better than one ;)


My view is heavily influenced by my own optimizers, but here is the thing :

you have points y (possibly multidimensional) and points x (multidimensional
too) and a fitting function f(x, parameters)
You construct a new class (for instance) that take x and y as parameters :
class cost_fun(object:
  def __init__(self, x, y):
    self.x = x
    self.y = y


and you define a call method that will be used by fmin, for instance :
  def __call__(self, parameters):
    cost = 0
    for (xi, yi) in (x, y):
      cost += numpy.sum((yi - f(xi, parameters))**2) # you can use some
parameters instead of all parameters, just iterate over the part you need
    return cost

And voilà, your basic cost function is created.
Here a quadratic cost is used (this is what leastsq may do), but you can use
a robust cost instead.

I hope I was clear.

Matthieu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20070704/507e3338/attachment.html>


More information about the SciPy-User mailing list