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基于Tkinter库实现简单文本编辑器实例
May 05 Python
python处理大数字的方法
May 27 Python
深入讲解Python编程中的字符串
Oct 14 Python
Python中static相关知识小结
Jan 02 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
python解析json串与正则匹配对比方法
Dec 20 Python
在python里面运用多继承方法详解
Jul 01 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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的错误信息
2006/10/09 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python多线程http下载实现示例
2013/12/30 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
小学教师的个人自我鉴定
2013/10/26 职场文书
网络信息安全承诺书
2014/03/26 职场文书
安全生产标语
2014/06/06 职场文书
同志主要表现材料
2014/08/21 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
2016年学校招生广告语
2016/01/28 职场文书
python 逐步回归算法
2021/04/06 Python
springboot+VUE实现登录注册
2021/05/27 Vue.js
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python