[SciPy-User] optimize.leastsq and improper input parameters

josef.pktd at gmail.com josef.pktd at gmail.com
Thu Jul 8 19:21:20 EDT 2010


On Thu, Jul 8, 2010 at 7:13 PM, ms <devicerandom at gmail.com> wrote:
> On 08/07/10 21:50, josef.pktd at gmail.com wrote:
>> On Thu, Jul 8, 2010 at 1:46 PM, ms<devicerandom at gmail.com>  wrote:
>
>>> massimo at boltzmann:~/work$ python test_norm_leastsq.py
>>> Traceback (most recent call last):
>>>    File "test_norm_leastsq.py", line 44, in<module>
>>>      minimize(x,y,[1,2])
>>>    File "test_norm_leastsq.py", line 41, in minimize
>>>      i = opt.leastsq(f_to_minimize, p0, args)
>>>    File "/usr/lib/python2.6/dist-packages/scipy/optimize/minpack.py",
>>> line 300, in leastsq
>>>      raise errors[info][1], errors[info][0]
>>> TypeError: Improper input parameters.
>>>
>>> The funny thing is that it worked *before* I messed with the thing to
>>> simplify the function-choosing mechanism (before I had N different
>>> functions for each combination of fixed/nonfixed params, now I just have
>>> two and I fix stuff *inside* the function), and I can't see however how
>>> can this be different. Also, the example above leaves me perplexed -it
>>> seems leastsq simply doesn't want two-variable functions to be minimized
>>> in this case. Any hint?
>>
>>
>> change in def f_to_minimize(pars,args):
>>
>>      #calculate squared residuals
>> ##    resid = [(i-j)**2 for i,j in zip(y,y_estimate)]
>> ##    return sum(resid)
>>      return [(i-j) for i,j in zip(y,y_estimate)]
>>
>> leastsq does the squared sum itself, and needs as return of the
>> function the vector of residuals
>>
>> docstring:
>> func – A Python function or method which takes at least one
>> (possibly length N vector) argument and returns M floating point numbers
>>
>> with only one parameter leastsq assumes you have one observation and
>> one parameter N=1, M=1
>>
>> this is what I get running the changed script
>> (array([-12.,   9.]), 2)
>>
>> I didn't check anything else in your script.
>>
>> Josef
>
> Thanks! I didn't notice that leastsq was so clever :)
> I tried quickly now and I still have some trouble, but seems unrelated
> to the issue, tomorrow I'll see if it's definitely fixed.

If it's possible in your original code, I would replace the list
comprehensions with numpy array operations.

Josef

>
> thanks again,
>
> m.
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>



More information about the SciPy-User mailing list