python之拟合的实现


Posted in Python onJuly 19, 2019

一、多项式拟合

多项式拟合的话,用的的是numpy这个库的polyfit这个函数。那么多项式拟合,最简单的当然是,一次多项式拟合了,就是线性回归。直接看代码吧

import numpy as np
 
def linear_regression(x,y):
 #y=bx+a,线性回归
 num=len(x)
 b=(np.sum(x*y)-num*np.mean(x)*np.mean(y))/(np.sum(x*x)-num*np.mean(x)**2)
 a=np.mean(y)-b*np.mean(x)
 return np.array([b,a])
def f(x):
 return 2*x+1
x=np.linspace(-5,5)
y=f(x)+np.random.randn(len(x))#加入噪音
y_fit=np.polyfit(x,y,1)#一次多项式拟合,也就是线性回归
print(linear_regression(x,y))
print(y_fit)

手写线性回归我还是会的,然后我们来看下输出:

[1.9937839 1.24167225]
[1.9937839 1.24167225]

由于有random每次显示的结果都不一样,但很明显的是上下两个print是意料之中的一样,emmmmm,一次多项式拟合的源代码应该就是像我写的那样。好了,那么一次以上呢?咳咳,我数学不算太好,还是老老实实用库函数吧,顺便画下图,见识它的威力。

import numpy as np
from matplotlib import pyplot as plt
 
def f(x):
 return x**2+1
def f_fit(x,y_fit):
 a,b,c=y_fit.tolist()
 return a*x**2+b*x+c
x=np.linspace(-5,5)
y=f(x)+np.random.randn(len(x))#加入噪音
y_fit=np.polyfit(x,y,2)#二次多项式拟合
y_show=np.poly1d(y_fit)#函数优美的形式
print(y_show)#打印
y1=f_fit(x,y_fit)
plt.plot(x,f(x),'r',label='original')
plt.scatter(x,y,c='g',label='before_fitting')#散点图
plt.plot(x,y1,'b--',label='fitting')
plt.title('polyfitting')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()#显示标签
plt.show()

输出:

2
1.001 x - 0.04002 x + 0.8952

python之拟合的实现

拟合效果看起来还是不错的。

二、各种函数的拟合

一般来说,多项式的拟合就能拟合很多函数了,比如指数函数,取对数就能化为多项式函数,甚至是一次多项式函数。可是,那些三角函数之类的复杂函数不能化为多项式去拟合,怎么办呢?要用到scipy.optimize的curve_fit函数了。

直接贴代码:

import numpy as np
from matplotlib import pyplot as plt
from scipy.optimize import curve_fit
 
def f(x):
 return 2*np.sin(x)+3
def f_fit(x,a,b):
 return a*np.sin(x)+b
def f_show(x,p_fit):
 a,b=p_fit.tolist()
 return a*np.sin(x)+b
x=np.linspace(-2*np.pi,2*np.pi)
y=f(x)+0.5*np.random.randn(len(x))#加入了噪音
p_fit,pcov=curve_fit(f_fit,x,y)#曲线拟合
print(p_fit)#最优参数
print(pcov)#最优参数的协方差估计矩阵
y1=f_show(x,p_fit)
plt.plot(x,f(x),'r',label='original')
plt.scatter(x,y,c='g',label='before_fitting')#散点图
plt.plot(x,y1,'b--',label='fitting')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

输出:

[1.91267059 3.04489528]
[[ 9.06910892e-03 -1.83703696e-11]
[-1.83703696e-11 4.44386331e-03]]

python之拟合的实现

使用方法基础的就是这样了。然后更多详细的参数的使用就是要看官网了。

1、https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html

2、https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.curve_fit.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python模拟enum枚举类型的方法小结
Apr 30 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
Python模块常用四种安装方式
Oct 20 Python
python中24小时制转换为12小时制的方法
Jun 18 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 #Python
python SVM 线性分类模型的实现
Jul 19 #Python
Django密码系统实现过程详解
Jul 19 #Python
Tensorflow实现酸奶销量预测分析
Jul 19 #Python
Python实现基于SVM的分类器的方法
Jul 19 #Python
Tensorflow模型实现预测或识别单张图片
Jul 19 #Python
python django下载大的csv文件实现方法分析
Jul 19 #Python
You might like
PHP 金额数字转换成英文
2010/05/06 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
javascript 跳转代码集合
2009/12/03 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
python3调用R的示例代码
2018/02/23 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
python定时关机小脚本
2018/06/20 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
python实现图片素描效果
2020/09/26 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
党员年终民主评议的自我评价
2013/11/05 职场文书
高中毕业自我鉴定
2013/12/13 职场文书
优秀教师先进事迹
2014/01/22 职场文书
高二学生评语大全
2014/04/25 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
期中考试复习计划
2015/01/19 职场文书
教师个人教学总结
2015/02/11 职场文书
首都博物馆观后感
2015/06/05 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
《所见》教学反思
2016/02/23 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
Python初识逻辑与if语句及用法大全
2021/08/07 Python
Android实现图片九宫格
2022/06/28 Java/Android