I'm trying to perform a constrained least-squares estimation using Scipy such that all of the coefficients are in the range (0,1)
and sum to 1
(this functionality is implemented in Matlab's LSQLIN
function).
Does anybody have tips for setting up this calculation using Python/Scipy. I believe I should be using scipy.optimize.fmin_slsqp()
, but am not entirely sure what parameters I should be passing to it.[1]
Many thanks for the help, Nick
[1] The one example in the documentation for fmin_slsqp
is a bit difficult for me to parse without the referenced text -- and I'm new to using Scipy.
scipy-optimize-leastsq-with-bound-constraints on SO givesleastsq_bounds
, which is
leastsq
with bound constraints such as 0 <= x_i <= 1.
The constraint that they sum to 1 can be added in the same way.
(I've found leastsq_bounds
/ MINPACK to be good on synthetic test functions in 5d, 10d, 20d;
how many variables do you have ?)
Have a look at this tutorial, it seems pretty clear.
Since MATLAB's lsqlin
is a bounded linear least squares solver, you would want to check out scipy.optimize.lsq_linear.
来源:https://stackoverflow.com/questions/9269383/constrained-least-squares-estimation-in-python