Skip to main content

About

A library for fitting continuous piecewise linear functions to data. Just specify the number of line segments you desire and provide the data.

Downloads a month pwlf ci codecov PyPI version Conda

Check out the documentation!

Read the blog post.

Example of a continuous piecewise linear fit to data.

Example of a continuous piecewise linear fit to a sine wave.

Now you can perform segmented constant fitting and piecewise polynomials! Example of multiple degree fits to a sine wave.

Features

For a specified number of line segments, you can determine (and predict from) the optimal continuous piecewise linear function f(x). See this example.

You can fit and predict a continuous piecewise linear function f(x) if you know the specific x locations where the line segments terminate. See this example.

If you want to pass different keywords for the SciPy differential evolution algorithm see this example.

You can use a different optimization algorithm to find the optimal location for line segments by using the objective function that minimizes the sum of square of residuals. See this example.

Instead of using differential evolution, you can now use a multi-start gradient optimization with fitfast() function. You can specify the number of starting points to use. The default is 2. This means that a latin hyper cube sampling (space filling DOE) of 2 is used to run 2 L-BFGS-B optimizations. See this example which runs fit() function, then runs the fitfast() to compare the runtime differences!

Installation

Python Package Index (PyPI)

You can now install with pip.

python -m pip install pwlf

Conda

If you have conda, you can also install from conda-forge.

conda install -c conda-forge pwlf

From source

Or clone the repo

git clone https://github.com/cjekel/piecewise_linear_fit_py.git

then install with pip

python -m pip install ./piecewise_linear_fit_py

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.

Changelog

All changes now stored in CHANGELOG.md

New weights= keyword allows you to perform weighted pwlf fits! Removed TensorFlow code which can now be found here.

Requirements

NumPy >= 1.14.0

SciPy >= 1.8.0

License

MIT License

Citation

@Manual{pwlf,
author = {Jekel, Charles F. and Venter, Gerhard},
title = {{pwlf:} A Python Library for Fitting 1D Continuous Piecewise Linear Functions},
year = {2019},
url = {https://github.com/cjekel/piecewise_linear_fit_py}
}

Metadata

Release files for pwlf 2.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pwlf 2.6.0
File Size Uploaded
pwlf-2.6.0.tar.gz 22.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pwlf 2.6.0
File Interpreter ABI Platform
pwlf-2.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 39.8 kB

Release files / pwlf-2.6.0.tar.gz

Download URL pwlf-2.6.0.tar.gz
Size 22.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6b0f729a08e6429a491cfe73977a580c09734bcf704f819e24e238c598c2defa
BLAKE2b-256 checksum
How to use checksums
787f739bfae23f416cd3a72f5442d93bb18c6690c55c28cd4586d34d198d32ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release files / pwlf-2.6.0-py3-none-any.whl

Download URL pwlf-2.6.0-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0100be3b8f55ede825524498656f996ec698e0a98f3124fb620be8deaadccf79
BLAKE2b-256 checksum
How to use checksums
7a11549f341c5baf58f1dc872007431f168c47b149fd83420fd748c887bc1c4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

2.6.0 This release

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

1 release file

2.2.1

1 release file

2.2.0

1 release file

2.1.0

1 release file

2.0.5

1 release file

2.0.4

1 release file

2.0.3

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.1.7

1 release file

1.1.6

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.11

1 release file

0.2.10

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.7

1 release file

0.2.6

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page