在实际的生产当中会积累很多的业务数据,很多时候数据的质量变得很重要,现在已经有很多数据质控的算法陆续应用了起来,但是大都是基于业务知识与数据分析技术来实现的,难以独立应用,今天想从单一数学的角度来尝试一下数据拟合相关的东西,在数据质控领域内,连续时刻的数据会形成一条曲线,做质控往往和数据曲线拟合密不可分,我们已经尝试过多种的数据曲线拟合方法,可以基于机器学习的回归模型来基于历史数据集构建回归模型进而挖掘曲线的规律,也可以基于深度学习来做同样的事情,今天的主要学习内容是基于多项式模型PCF来实现数据曲线拟合。

多项式拟合模型中的一个核心优化策略就是最小二乘法,不了解这个方法的可以先去简单百度一下,整体的路线是这样的:

python中scipy模块已经实现了多项式拟合模型,我们不需要自己再去实现只需要一句话导入进来需要的方法就行了,具体命令如下:

from scipy.optimize import curve_fit

实验中用到数据如下:

D0=[40, 33, 32, 32, 30, 29, 28, 29, 27, 25, 22, 21, 20, 19, 17, 17, 18, 20, 20, 21, 21, 23, 21, 22, 24, 24, 24, 26, 25, 23, 23, 20, 23, 25, 22, 21, 18, 18, 19, 19, 19, 18, 18, 18, 18, 18, 18, 17, 19, 20, 20, 19, 20, 20, 20, 20, 19, 18, 18, 21, 24, 20, 25, 25, 24, 21, 21, 21, 21, 25, 29, 32, 30, 29, 29, 32, 32, 33, 36, 36, 35, 34, 36, 39, 43, 47, 48, 46, 47, 50, 50, 54, 55, 58, 55, 52, 49, 52, 49, 46, 46, 43, 39, 38, 39, 39, 39, 38, 36, 36, 35, 33, 33, 35, 36, 33, 32, 32, 26, 26, 28, 26, 28, 30, 30, 27, 26, 27, 26, 27, 22, 22, 25, 28, 29, 27, 28, 31, 35, 50, 60, 65, 66, 67, 64, 61, 69, 74, 77, 75, 77, 72, 64, 73, 80, 77, 74, 77, 83, 84, 87, 88, 85, 79, 77, 68, 68, 69, 65, 64, 64, 60, 64, 63, 65, 67, 68, 68, 62, 54, 52, 52, 47, 48, 47, 0, 45, 46, 48, 46, 45, 45, 45, 43, 42, 42, 40, 39, 38, 39, 38, 36, 38, 39, 38, 38, 35, 35, 29, 32, 42, 52, 55, 58, 57, 55, 55, 56, 55, 53, 52, 54, 58, 59, 62, 59, 54, 53, 52, 52, 55, 57, 55, 54, 55, 62, 72, 53, 74, 70, 72, 68, 67, 60, 58, 56, 54, 53, 52, 52, 51, 48, 45, 42, 40, 42, 45, 53, 57, 55, 53, 53, 55, 56, 57, 58, 57, 56, 56, 55, 55, 55, 54, 53, 52, 54, 57, 63, 67, 70, 70, 66, 64, 62, 60, 60, 63, 66, 61, 62, 66, 69, 72, 74, 75, 72, 69, 65, 62, 63, 62, 58, 52, 48, 46, 43, 38, 35, 32, 31, 31, 32, 29, 27, 29, 28, 29, 28, 26, 26, 29, 30, 28, 23, 23, 22, 20, 20, 19, 0, 33, 42, 42, 42, 44, 48, 52, 53, 52, 50, 46, 43, 41, 38, 38, 39, 38, 34, 30, 28, 30, 33, 33, 37, 40, 46, 49, 51, 52, 52, 52, 51, 49, 48, 48, 47, 46, 48, 49, 47, 44, 42, 40, 36, 36, 40, 40, 42, 43, 43, 45, 48, 53, 54, 53, 51, 46, 42, 43, 48, 52, 53, 52, 50, 52, 52, 53, 54, 62, 65, 67, 68, 68, 69]

数据量不是很大,差不多是几百个数据吧,感兴趣的话可以直接复制过去跑一跑的。

拿到这一批数据后我们首先先对数据做一个整体的查看,可视化命令如下:

plt.plot(D0)
plt.plot(D00)
plt.show()

上图中,蓝色曲线是原始的数据曲线,黄色线条是经过滑动平均的数据填充算法处理后的数据曲线。

接下来我们要对比一下经过数据预处理与未经过数据预处理两种形式得到的数据拟合的效果有没有差别,具体实现如下:

def twoCompare(y1,y2,n,flag=True,pic_path='compare.png'):'''对比数据预处理与未预处理的效果'''#未预处理x=range(len(y1))f1=np.polyfit(x,y1,n)p1=np.poly1d(f1)yvals=p1(x) mse,info1=calPerformance(y1,yvals.tolist())plt.clf()plt.figure(figsize=(8,6))#预处理f2=np.polyfit(x,y2,n)p1=np.poly1d(f2)yvals2=p1(x) mse,info2=calPerformance(y2,yvals2.tolist())plt.plot(x,y1,'b',label='original values')plt.plot(x,yvals,'g',label='polyfit values(NO)')plt.plot(x,yvals2,'r',label='polyfit values(YES)')plt.xlabel('X',english)plt.ylabel('Y',english)#设置图例信息plt.legend(loc=4,ncol=1) #指定legend的位置右下角title_info=str(n)+u"阶多项式拟合结果对比曲线(未预处理) \n"+info1+\'\n'+str(n)+u"阶多项式拟合结果对比曲线(预处理) \n"+info2plt.title(title_info,chinese)plt.savefig(pic_path)return yvals,yvals2

结果如下:

我们以回归模型常用的四个指标来衡量PCF对数据曲线的拟合好坏,可以发现经过数据预处理后再同等阶数的多项式模型中拟合的效果要优于未经过数据预处理的情况,此外,我们同样证实了,在自动调参实验中,未经过数据预处理时在较低的阶数就停止了继续优化,且最终的拟合效果不如经过数据预处理的情况。

在完成上述工作后,我突然想到,是否可以将原始的数据曲线人为进行划分呢,划分成多个区段,然后分阶段拟合呢,效果是不是会更好一点呢?想到这里不如实现一下吧:

def jieDuanFitting(data,num=24,n=5,save_path='save_path.png'):'''分阶段拟合数据'''data_list=cutList(data,c=num)res_list=[]for i in range(len(data_list)):one=data_list[i]one_res=polyDemo(range(len(one)),one,n=n)res_list+=one_resplt.clf()x_list=range(len(data))plt.plot(x_list,data,'b',label='original values')plt.plot(x_list,res_list,'r',label='polyfit values')plt.xlabel('X',english)plt.ylabel('Y',english)mse,info=calPerformance(data,res_list)plt.legend(loc=4,ncol=1) #指定legend的位置右下角title_info=str(n)+u"阶多项式拟合结果对比曲线\n"+infoplt.title(title_info,chinese)plt.savefig(save_path)return res_list

结果如下:

从上图结果中看到,5阶的时候就已经达到了0.981的拟合度,果然是非常不错的。

写到这里忍不住要对比一下上面三种方法:

D1、D2和D3分别表示未经过数据预处理、经过数据预处理和分阶段拟合三种方式得到的拟合曲线,还是很有收获的,之后有时间接着再做,记录一下。

python基于混合多项式模型PCF实现数据曲线拟合相关推荐

  1. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

  2. python基于北京公交线txt数据画cad

    这里写自定义目录标题 运用python基于北京公交线网txt数据绘制cad 导入pyautocad 读取cad文件 在cad控制台上打字 读取图层信息 读取多段线顶点坐标 新建图层置为当前 cad上画 ...

  3. livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程

    敬请关注<地学新视野> 摘要:本文简单介绍了SEG-Y地震数据文件格式,以及如何用Python语言编写读写SEG-Y格式的地震数据并绘制地震剖面,其中用到了Segyio和matplotli ...

  4. Python 基于Python从mysql表读取千万数据实践

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  5. matlab删失数据威布尔,基于混合I型删失数据威布尔模型的可接受抽样计划

    基于混合I型删失数据威布尔模型的可接受抽样计划 Acceptance Sampling Plans with Type-I Hybrid Censoring Scheme of Weibull Dis ...

  6. python中计算如何实现_基于python如何实现计算两组数据P值

    我们在做A/B试验评估的时候需要借助p_value,这篇文章记录如何利用python计算两组数据的显著性. 一.代码# TTest.py # -*- coding: utf-8 -*- ''' # C ...

  7. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...

  8. 【计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩】 https://b23.tv/jRN6MVh

    [计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩] https://b23.tv/jRN6MVh https://b23.tv/jRN6MVh

  9. python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析

    这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...

  10. 【大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析

    [大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析-哔哩哔哩https://b23.tv/saIKtBH flask web框架,数据使用requests模块爬取数据, ...

最新文章

  1. python字典生成式_【IT专家】Python 简化for循环:列表,集合与字典生成式
  2. olap与mysql_MySQL与OLAP:分析型SQL查询最佳实践探索
  3. 十二、Powerbi绘制人员地区分布图和后期学习
  4. poj1769 线段树优化的dp
  5. mfs1.6.x故障一例,血的经验教训 推荐
  6. 图解TCPIP-ICMP
  7. 浏览器启动__chrome浏览器
  8. 程序常用配置文件格式介绍
  9. Spring的加密工具类---DigestUtils
  10. html完全自学手册,完全自学手册PHP+Ajax(PPT) 第3章 HTML基础.ppt
  11. 测试职业思考:如何成为一名优秀的软件测试工程师
  12. 有哲理有关java的_从Java到“浑沌之死”再到人生哲理
  13. python傅里叶变换 信号处理 序列_(十六)数字图像处理中的傅里叶(DFT/FFT)
  14. 仙之侠道2玖章青门任务怎么做_仙之侠道Ⅱ攻略_仙之侠道Ⅱ柒章 任务全攻略 新手必看_牛游戏网魔兽地图专区...
  15. IT运维大咖带你玩转企业信息运维自动化
  16. Google Analytic谷歌分析
  17. 《越狱》中的项目管理——两个版本的对比
  18. 让C语言写图形库时不关闭控制台,GCC编译Win图形程序不显示控制台方法
  19. 漫游测试之性能测试(5.4-执行计划)
  20. matlab 画星座图,基于k-D树邻近点搜索的彩色星座图绘制[Matlab]

热门文章

  1. 模因(meme)收集
  2. springMVC3学习(十)--注解式控制器
  3. shell学习总结(1-4)
  4. poj1847 最短路
  5. python下的MySQLdb使用
  6. javaScript,Dwr分页模拟
  7. SQL Server 通过发布订阅 实现数据库同步
  8. 为什么象网络蚂蚁这样的多线程程序可以加快下载速度?
  9. ASP.NET编程的十大技巧
  10. [LuoguP1360][USACP07MAR]黄金阵容均衡