Skip to content

对sklearn中的曲线拟合函数进行了整合,并加入一些常用的自定义函数,提供了曲线拟合并且预测曲线值或走势的简单的统一接口,能够在拟合并预测可导函数的一个通用函数

Notifications You must be signed in to change notification settings

351642983/CurveFitPredict

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

CurveFitPredict

对sklearn中的曲线拟合函数进行了简单整合,提供了方便曲线拟合并且预测曲线值或走势的简单的统一接口,能够在一定范围内拟合并预测可导函数的一个通用函数。

曲线函数拟合预测

主要功能

将多项式拟合和一些常见的函数进行了整合,提供了一个方便的统一接口

包含

  • 1.拟合单变量曲线
  • 2.预测曲线
  • 3.预测曲线和真实数据对比图
  • 4.预测曲线分数

拟合曲线包括

  • 1.幂函数
  • 2.周期函数(傅里叶级数)
  • 3.指数函数
  • 4.上述函数的组合
  • 5.多项式函数
  • 6.符合上述函数的数列

其余

  • 提供单变量拟合的曲线和具体的函数表达式和曲线图对比
  • 根据skleran提供的函数拟合多变量函数

使用说明

1.导入文件

导入myfunctool

from tools import myfunctool

2.数列拟合预测

下面是一个拟合斐波那契数列的例子,提供了斐波那契数列前19个值,其中第18个值是缺失的,下面是补全第18个值并预测20-22个值的斐波那契值

#斐波那契数列前19个数,并在18个位置存在缺失值
x=[1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,None,6765]

#selectmode为1时表示使用多项式函数拟合,2表示利用整合的函数拟合,3表示自动判断二者拟合效果并给出拟合范围内最好的类别,默认为3
info=myfunctool.find_logical(x,selectmode=2)

print("用此公式求得原数列值:",myfunctool.func_general(info,list(range(1,len(info[-1])+1))),"  拟合得分:",info[-3])

#预测该斐波那契数列的之后的3个值 (真实值为:10946,17711,28657)
print("用此公式计算的后3个数列值:",myfunctool.func_general(info,[info[-1][-1]+1,info[-1][-1]+2,info[-1][-1]+3]))

#预测该斐波那契数列中的缺失值 (真实值为:4181)
print("用此公式预测缺失值:",myfunctool.func_general(info,[info[-1][-1]-1]))
print("预测函数公式为:",myfunctool.get_func(info))

#显示斐波那契数列拟合函数和真实值对比图
myfunctool.show_func(info,1,len(info[-1])+1)

2.1 拟合并预测斐波那契数列曲线形状:

斐波那契数列预测

2.1 预测斐波那契数列的结果:

斐波那契数列预测结果

3.曲线拟合

下面是一个拟合任意曲线的例子,以y=4x^2+3x为例,给出当x=0,1,2,3,4时候以及对应的y值,根据给定的值拟合曲线

#随便想一个函数,例如下面的:y=4x^2+3x,并给出任意对应的x和y的值
x=[0,1,2,3,4]
y=[0,7,22,45,76]
info=myfunctool.auto_func(x,y)
print("原值为:",info[-2])
print("用此公式求得原值:",myfunctool.func_general(info,info[-1]),"  拟合曲线函数得分:",info[-3])
print("x=5时,函数的预测值:",myfunctool.func_general(info,[5]))
print("预测拟合曲线函数为:",myfunctool.get_func(info))
print("r2分数:",myfunctool.get_model_r2score(info))

#显示x=0-6时的预测函数和真实值的对比图
myfunctool.show_func(info,0,6)

3.1 拟合y=4x^2+3x函数曲线形状(任意可导函数,这里以4x^2+3x为例):

函数预测

3.2 预测y=4x^2+3x函数的计算结果:

函数预测结果

4.预测周期函数或数列

输入任意周期函数数列,并得出拟合曲线

print("---------周期数列预测-------")
info=myfunctool.find_logical([490, 477, 467, 458, 450, 442, 433, 426, 419, 413, 411, 428, 445, 441, 434, 436, 446, 442, 427, 414, 402,
     391, 381, 372, 366, 363, 363, 364, 366, 372, 382, 397, 414, 430, 444, 460, 481, 502, 522, 539, 551, 561,
     567, 569, 568, 566, 570, 576, 578, 574, 565, 553, 541, 529, 519, 507, 496, 486, 494, 528, 551, 563, 576,
     596, 612, 624, 631, 636, 639, 640, 640, 638, 635, 633, 630, 625, 620, 615, 609, 603, 597, 590, 584, 578,
     571, 559, 541, 529, 524, 511, 486, 454, 422, 394, 372, 348, 340, 335, 334, 332, 332, 332, 332, 332, 333,
     336, 339, 341, 344, 349, 355, 360, 366, 372, 383, 396, 408, 419, 432, 448, 463, 473, 482, 493, 511, 530,
     551, 568, 580, 595, 597, 597, 595, 593, 598, 606, 619, 632, 642, 653, 659, 658, 653, 645, 640, 641, 643,
     650, 656, 659, 659, 655, 649, 640, 632, 626, 621, 614, 603, 590, 575, 564, 550, 530, 519, 507, 495, 484,
     472, 462, 452, 445, 437, 430, 423, 417, 423, 442, 445, 435, 423, 422, 431, 436, 428, 413, 401, 390, 381,
     373, 367, 363, 364, 365, 367, 371, 378, 396, 411, 428])
print("用此公式计算的后3个值:",myfunctool.func_general(info,[info[-1][-1]+1,info[-1][-1]+2,info[-1][-1]+3]))
myfunctool.show_func(info,1,len(info[-1])+1)
print(myfunctool.get_func(info))
print("r2分数:",myfunctool.get_model_r2score(info))

4.1 拟合上述周期数列的曲线:

周期数列拟合

4.2 预测周期数列结果:

周期数列预测结果

5.多变量函数拟合

同sklearn的极端随机森林回归,随机森林回归,最小二乘法,梯度上升和梯度下降,详细用法见代码示例

About

对sklearn中的曲线拟合函数进行了整合,并加入一些常用的自定义函数,提供了曲线拟合并且预测曲线值或走势的简单的统一接口,能够在拟合并预测可导函数的一个通用函数

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy