skillfed

pwlf

fit piecewise linear functions to data

pwlf v2.6.0 265.8K downloads/30d#8,315 on PyPI352
Permissive license MIT License Active released

What it is and what it does

pwlf is a Python library for fitting continuous piecewise linear functions to data using least squares optimization. You specify how many line segments you want, provide your x-y data, and the library finds the optimal breakpoint locations and segment slopes that minimize residuals. It uses scipy's differential evolution algorithm by default for global optimization, but also offers a faster multi-start gradient-based approach and supports custom optimization routines.

The library handles several fitting scenarios: automatic breakpoint discovery for a specified number of segments, fitting with known breakpoint locations, and weighted regression. It depends on numpy and scipy for numerical computation and linear algebra. The underlying mathematics are based on least squares formulation with global optimization to locate breakpoints, making it suitable for data that exhibits piecewise-linear behavior across different regions.

Use it for:

  • Detect and model regime changes in time-series data where behavior shifts between distinct linear trends
  • Approximate nonlinear curves with continuous piecewise linear segments for interpretability and computational efficiency
  • Fit material stress-strain curves or other physical phenomena exhibiting multiple linear regions with known transition points
  • Perform change-point analysis in experimental or observational data to identify where relationships between variables shift
  • Build reduced-order models of complex systems by segmenting the input domain and fitting linear approximations per segment

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Fits continuous piecewise linear functions to data by specifying the number of line segments and providing x-y data, with support for weighted fits and multiple optimization strategies.

Yes. The package is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive MIT License. It solves a specific numerical problem—fitting piecewise linear functions—with a clean API and multiple optimization strategies. Install it if you need to model data with distinct linear regimes or approximate nonlinear relationships with continuous piecewise linear segments.

Install

pwlf on PyPI

pip

pip install pwlf

uv

uv add pwlf

poetry

poetry add pwlf

Installing pwlf

Before you install

Low friction install with only numpy and scipy as runtime dependencies. Actively maintained with a recent release 28 days ago and 352 repository stars.

License in practice

MIT License permits unrestricted use, modification, and distribution in proprietary and open-source projects without attribution requirement.

Quickstart

pip install pwlf
import pwlf
my_pwlf = pwlf.PiecewiseLinFit(x_data, y_data)
my_pwlf.fit(number_of_segments)

Verify before relying

  • Whether the library handles edge cases like constant-valued segments or single-point data gracefully
  • Performance characteristics on datasets with very large numbers of observations
  • Whether weighted fits support negative or zero weights and how they are normalized

Package facts

License MIT License (permissive)
Python support supports the current Python release (>3.5)
Install friction low — pure-Python wheel
Runtime dependencies 2 — numpy, scipy
Maintenance actively maintained — 28 days since the last release
Last repo commit
First released
Downloads 265,750/month — #8,315 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pwlf-2.6.0-py3-none-any.whl

Programming Language :: Python :: 3

Tags

piecewise linear regressionfit segmented lines to datacontinuous piecewise linear functionbreakpoint detection fittingmulti-segment linear regressionpwlf curve fittingleast squares piecewise fit
curve-fittingoptimizationregression

More Mathematics packages