# pwlreg
[![Tests](https://github.com/ensley-nexant/pwlreg/actions/workflows/tests.yml/badge.svg)](https://github.com/ensley-nexant/pwlreg/actions/workflows/tests.yml)
[![codecov](https://codecov.io/gh/ensley-nexant/pwlreg/branch/main/graph/badge.svg?token=x8l1hx77eL)](https://codecov.io/gh/ensley-nexant/pwlreg)
A scikit-learn-compatible implementation of Piecewise Linear Regression
## Installation
```
pip install pwlreg
```
## Documentation
[See the documentation here](https://ensley-nexant.github.io/pwlreg/).
```python
import numpy as np
import matplotlib.pyplot as plt
import pwlreg as pw
x = np.array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
y = np.array([1., 1.5, 0.5, 1., 1.25, 2.75, 4, 5.25, 6., 8.5])
m = pw.AutoPiecewiseRegression(n_segments=2, degree=[0, 1])
m.fit(x, y)
xx = np.linspace(1, 10, 100)
plt.plot(x, y, "o")
plt.plot(xx, m.predict(xx), "-")
plt.show()
```
![pwlreg toy example](docs/img/img.png)
```python
m.coef_ # [ 1.00 -5.50 1.35 ]
m.breakpoints_ # [ 1.000000 4.814815 10.000000 ]
```
$$
x =
\begin{cases}
1, & 1 \leq x < 4.815 \\
-5.5 + 1.35x, & 4.815 \leq x < 10
\end{cases}
$$
Raw data
{
"_id": null,
"home_page": "https://github.com/ensley-nexant/pwlreg",
"name": "pwlreg",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "",
"keywords": "piecewise regression,scikit-learn,sklearn,change point",
"author": "John Ensley",
"author_email": "jensley@resource-innovations.com",
"download_url": "https://files.pythonhosted.org/packages/dd/c3/649b05aff3ad95ad02f6f32386bcee7f3e5c9d4e1369e86244caf4b3257d/pwlreg-1.0.1.tar.gz",
"platform": null,
"description": "# pwlreg\n\n[![Tests](https://github.com/ensley-nexant/pwlreg/actions/workflows/tests.yml/badge.svg)](https://github.com/ensley-nexant/pwlreg/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/ensley-nexant/pwlreg/branch/main/graph/badge.svg?token=x8l1hx77eL)](https://codecov.io/gh/ensley-nexant/pwlreg)\n\nA scikit-learn-compatible implementation of Piecewise Linear Regression\n\n## Installation\n\n```\npip install pwlreg\n```\n\n## Documentation\n\n[See the documentation here](https://ensley-nexant.github.io/pwlreg/).\n\n\n```python\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nimport pwlreg as pw\n\n\nx = np.array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])\ny = np.array([1., 1.5, 0.5, 1., 1.25, 2.75, 4, 5.25, 6., 8.5])\n\nm = pw.AutoPiecewiseRegression(n_segments=2, degree=[0, 1])\nm.fit(x, y)\n\nxx = np.linspace(1, 10, 100)\nplt.plot(x, y, \"o\")\nplt.plot(xx, m.predict(xx), \"-\")\nplt.show()\n```\n\n![pwlreg toy example](docs/img/img.png)\n\n```python\nm.coef_ # [ 1.00 -5.50 1.35 ]\nm.breakpoints_ # [ 1.000000 4.814815 10.000000 ]\n```\n\n$$\nx =\n\\begin{cases}\n1, & 1 \\leq x < 4.815 \\\\\n-5.5 + 1.35x, & 4.815 \\leq x < 10\n\\end{cases}\n$$\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A scikit-learn-compatible implementation of Piecewise Linear Regression",
"version": "1.0.1",
"project_urls": {
"Documentation": "https://ensley-nexant.github.io/pwlreg",
"Homepage": "https://github.com/ensley-nexant/pwlreg",
"Repository": "https://github.com/ensley-nexant/pwlreg"
},
"split_keywords": [
"piecewise regression",
"scikit-learn",
"sklearn",
"change point"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "47971f2125890ef96e2cc02c2c11911482c384e8e4b24d8c7f00bcde5ee082b1",
"md5": "2969dad5459132d05c1a2c20790caaab",
"sha256": "4c35abfaf3657b2988addf4b1bf42fedf93de3446645f484df5e5fe5546c79a8"
},
"downloads": -1,
"filename": "pwlreg-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2969dad5459132d05c1a2c20790caaab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 7370,
"upload_time": "2023-12-26T23:01:54",
"upload_time_iso_8601": "2023-12-26T23:01:54.745631Z",
"url": "https://files.pythonhosted.org/packages/47/97/1f2125890ef96e2cc02c2c11911482c384e8e4b24d8c7f00bcde5ee082b1/pwlreg-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ddc3649b05aff3ad95ad02f6f32386bcee7f3e5c9d4e1369e86244caf4b3257d",
"md5": "f319817b2dd3795eb36748153853eb15",
"sha256": "22145c7e3d18fb4dcdd97cabaf05ebc4e6a73f68bc4db2ee229021eaa8817b35"
},
"downloads": -1,
"filename": "pwlreg-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "f319817b2dd3795eb36748153853eb15",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 7789,
"upload_time": "2023-12-26T23:01:56",
"upload_time_iso_8601": "2023-12-26T23:01:56.409028Z",
"url": "https://files.pythonhosted.org/packages/dd/c3/649b05aff3ad95ad02f6f32386bcee7f3e5c9d4e1369e86244caf4b3257d/pwlreg-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-26 23:01:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ensley-nexant",
"github_project": "pwlreg",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pwlreg"
}