How it works ============ This `paper `__ explains how this library works in detail. This is based on a formulation of a piecewise linear least squares fit, where the user must specify the location of break points. See `this post `__ which goes through the derivation of a least squares regression problem if the break point locations are known. Alternatively check out `Golovchenko (2004) `__. Global optimization is used to find the best location for the user defined number of line segments. I specifically use the `differential evolution `__ algorithm in SciPy. I default the differential evolution algorithm to be aggressive, and it is probably overkill for your problem. So feel free to pass your own differential evolution keywords to the library. See `this example `__.