Least squares fitting with Numpy and Scipy
numpyscipyleast-squarescurve-fittingregressionpython
Abstraction: Python code tutorial for linear and nonlinear least-squares data fitting
Key points:
- Three NumPy approaches to linear least squares: direct matrix inversion,
np.linalg.lstsq, andnp.polyfit; direct inversion is fastest (~16 µs) butlstsqandpolyfitare more idiomatic - Polynomial fitting uses
np.polyfitwhich internally builds a Vandermonde matrix - Non-linear least squares uses SciPy's
optimize.leastsqwith the Levenberg-Marquardt algorithm; requires an initial parameter guess scipy.optimize.curve_fitwrapsleastsqwith a simpler interface but is ~70% slower than callingleastsqdirectly- Poor initial guesses (e.g., for trigonometric functions) cause bad fits; domain knowledge is needed to set reasonable starting values
Connections: Numpy · Scipy · Least Squares · Curve Fitting
Source: https://mmas.github.io/least-squares-fitting-numpy-scipy