分段线性函数拟合数据
pwlf的Python项目详细描述
关于
用于将连续分段线性函数拟合到数据的库。 只需指定所需的线段数并提供 数据。
查看 documentation!
阅读blog post。
连续分段线性拟合到数据的示例。
正弦波的连续分段线性拟合示例。
现在可以执行分段常数拟合和分段 多项式!
功能
对于指定数量的线段,可以确定(和预测 从)最优连续分段线性函数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。
要求
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}}