分段线性函数拟合数据

pwlf的Python项目详细描述


关于

用于将连续分段线性函数拟合到数据的库。 只需指定所需的线段数并提供 数据。

Downloads a monthBuild StatusCoverage Status

查看 documentation

阅读blog post

Example of a continuous piecewise linear fit to data.

连续分段线性拟合到数据的示例。

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

正弦波的连续分段线性拟合示例。

现在可以执行分段常数拟合和分段 多项式!Example of multiple degree fits to a sine wave.

功能

对于指定数量的线段,可以确定(和预测 从)最优连续分段线性函数f(x)。见this example

如果 您知道线段终止的特定X位置。见 this example

如果要传递scipy微分的不同关键字 进化算法见this example

您可以使用不同的优化算法来找到 使用目标函数确定线段的位置 最小化残差平方和。见this example

现在,您可以使用多重启动,而不是使用差分进化 使用fitfast()函数进行梯度优化。您可以指定 要使用的起点数。默认值为2。这意味着 拉丁超立方体采样(空间填充DOE)用于运行2 L-BFGS-B优化。见this example 它运行fit()函数,然后运行fitfast()来比较 运行时差异!

安装

现在可以使用pip安装。

[sudo] pip install pwlf

或者克隆回购协议

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

然后用pip安装

[sudo] pip install ./piecewise_linear_fit_py

工作原理

这个 paper 详细说明此库的工作方式。

这是基于分段线性最小二乘拟合的公式, 其中用户必须指定断点的位置。见this post 经过最小二乘回归问题的推导 如果断点位置已知。或者退房 Golovchenko (2004)

全局优化用于为用户找到最佳位置 定义的线段数。我特别使用differential evolution scipy中的算法。我默认差分进化算法为 有攻击性,而且可能是对你的问题杀伤力过大。所以请放心 将您自己的差异进化关键字传递给库。见 this example

更改日志

所有更改现在存储在 CHANGELOG.md

新的degree=关键字允许您调整分段常量或 分段多项式!现在可以计算标准误差和p值 对于非线性回归问题!

要求

Python2.7+

numpy(在版本>;=1.14.0上测试)

SCIPY(在版本>;=0.19.0上测试)

pydoe(在版本>;=0.3.8上测试)

可选:

TensorFlow(在=1.13.1版上测试)

许可证

麻省理工学院许可证

引文

@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}}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名