python 曲线拟合(numpy.polyfit、scipy.optimize.curve_fit)
小白的学习笔记,欢迎各位大神批评指正。
python 曲线拟合
(一次二次比较简单,直接使用numpy中的函数即可,来自 <https://blog.csdn.net/yefengzhichen/article/details/52767733> )
1.多项式拟合
(1)简介
z= numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)[source]
Deg Degree of the fitting polynomial 1次多项式即为线性,deg次数太高会有震荡
采用最小二乘多项式拟合,返回多项式的系数
p = np.poly1d(z) 可以获得多项式(一元多次函数) 或者直接用yvals=np.polyval(z,5)
x = p(5) x带入多项式求得一个值
(2)官方文档
numpy.polyfit
来自 <https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html>
The Polynomial.fit class method is recommended for new code as it is more stable numerically. See the documentation of the method for more information.
numpy.poly1d
来自 <https://docs.scipy.org/doc/numpy/reference/generated/numpy.poly1d.html>
numpy.polyval
来自 <https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyval.html>
(3)例子 来自 <https://www.cnblogs.com/jingsupo/p/python_curve_fit.html>
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1,17,1)
y = np.array([4.00,6.40,8.00,8.80,9.22,9.50,9.70,9.86,10.00,10.20,10.32,10.42,10.50,10.55,10.58,10.60])
z1 = np.polyfit(x,y,3) #用3次多项式拟合 可以改为5 次多项式。。。。 返回三次多项式系数
p1= np.poly1d(z1)
print(p1) #在屏幕上打印拟合多项式
yvals = p1(x)#也可以使用yvals=np.polyval(z1,x)
plot1 = plt.plot(x,y,'*',label='original values')
plot2 = plt.plot(x,yvals,'r',label='polyfit values')
plt.xlabel('xaxis')
plt.ylabel('yaxis')
plt.legend(loc=4) #指定legend的位置,读者可以自己help它的用法
plt.title('polyfitting')
plt.show()
plt.savefig('p1.png')
2.scipy.optimize.curve_fit
(1)简介
Fitting data with SciPy 来自 <http://scipyscriptrepo.com/wp/?p=76>
The scipy.optimize module contains a least squares curve fit routine that requires as input a user-defined fitting function (in our case fitFunc ), the x-axis data (in our case, t) and the y-axis data (in our case, noisy). The curve_fit routine returns an array of fit parameters, and a matrix of covariance data 协方差(the square root of the diagonal values 对角线值are the 1-sigma uncertainties on the fit parameters—provided you have a reasonable fit in the first place.):
当然,curve_fit()函数不仅可以用于直线、二次曲线、三次曲线的拟合和绘制,仿照代码中的形式,可以适用于任意形式的曲线的拟合和绘制,只要定义好合适的曲线方程即可。来自 <https://blog.csdn.net/guduruyu/article/details/70313176>
调用curve_fit()函数,核心步骤:
1) 定义需要拟合的函数类型,如:
def func(x, a, b):
return a*np.exp(b/x)
2) 调用 popt, pcov = curve_fit(func, x, y) 函数进行拟合,并将拟合系数存储在popt中,a=popt[0]、b=popt[1]进行调用;
3) 调用func(x, a, b)函数,其中x表示横轴表,a、b表示对应的参数。
来自 <http://www.mamicode.com/info-detail-1793339.html>
(2)官方文档
scipy.optimize.curve_fit 来自 <https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html>
(3)例子 来自 <https://www.cnblogs.com/jingsupo/p/python_curve_fit.html>
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
#用指数形式来拟合
x=np.arange(1,17,1)
y=np.array([4.00,6.40,8.00,8.80,9.22,9.50,9.70,9.86,10.00,10.20,10.32,10.42,10.50,10.55,10.58,10.60])
def func(x,a,b):
return a*np.exp(b/x)
popt,pcov=curve_fit(func,x,y)
a=popt[0] #popt里面是拟合系数,读者可以自己help其用法
b=popt[1]
yvals=func(x,a,b)
plot1=plt.plot(x,y,'*',label='original values')
plot2=plt.plot(x,yvals,'r',label='curve_fit values')
plt.xlabel('xaxis')
plt.ylabel('yaxis')
plt.legend(loc=4) #指定legend的位置,读者可以自己help它的用法
plt.title('curve_fit')
plt.show()
plt.savefig('p2.png')
1.幂函数和指数函数的例子
python指数、幂数拟合curve_fit 来自 <https://blog.csdn.net/yefengzhichen/article/details/52767733>
2.高斯拟合的例子
python scipy.optimize curve_fit 多高斯拟合 来自 <https://blog.csdn.net/vola9527/article/details/40432609>
def f_gauss(x, A, B, C, sigma):
return A*np.exp(-(x-B)**2/(2*sigma**2)) + C
来自 <https://blog.csdn.net/guduruyu/article/details/70313176>
其他:
可以借助Pandas导入数据,再进行处理
来自 <http://www.mamicode.com/info-detail-1793339.html>
矩阵运算:
Python 二维曲线拟合
来自 <http://www.aspku.com/tech/jiaoben/python/338265.html>
python_numpy最小二乘法的直线、曲线拟合
来自 <https://www.jianshu.com/p/354b1f2a5fd0>
3.使用神经网络拟合曲线(MATLAB/Python)
来自 <https://blog.csdn.net/hongbin_xu/article/details/79674611>
python 曲线拟合(numpy.polyfit、scipy.optimize.curve_fit)相关推荐
- scipy.optimize.curve_fit函数用法解析
scipy.optimize.curve_fit函数用法解析 转:https://zhuanlan.zhihu.com/p/144353126 optimize.curve_fit()函数,用于日常数 ...
- scipy中的scipy.optimize.curve_fit
scipy中的scipy.optimize.curve_fit 这里写目录标题 scipy中的scipy.optimize.curve_fit 参数 Return scipy.optimize.``c ...
- 为python安装numpy和scipy(federo)
为了进行数值计算,例如积分等等,需要安装numpy和scipy,其中scipy是依赖于numpy的,所以先要装numpy. 1, 通过下载http://pypi.python.org/pypi/num ...
- python安装numpy-如何为python安装numpy和scipy?
我厌倦了尝试为phyton 2.7.5安装numpy和scipy,我需要这个版本的python,因为我的最终目标是安装类(http://class-code.net/)和montepython(htt ...
- windows64位环境下python安装numpy、scipy和matplotlib
最近想使用python做一些机器学习方向的算法实现,使用python做数据分析和矩阵运算什么的常需要三个库文件:numpy.scipy和matplotlib,于是着手安装. 我自己机子的配置是win8 ...
- 简述 Python 的 Numpy、SciPy、Pandas、Matplotlib 的区别
From:https://www.jianshu.com/p/32cb09d84487 Numpy:基础的数学计算模块,以矩阵为主,纯数学. SciPy:基于Numpy,提供方法(函数库)直接计算结果 ...
- python numpy安装windows_windows下安装python的numpy,scipy,sklearn
前提环境(根据自己所安装的为准): python3.7 windows10 首先,要先下载好这三种包下载地址为 https://www.lfd.uci.edu/~gohlke/pythonlibs/ ...
- windows下python安装Numpy和Scipy模块
2019独角兽企业重金招聘Python工程师标准>>> Numpy是什么? 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplo ...
- windows下python安装Numpy、Scipy、matplotlib模块
python 2.7 针对2.7的软件. numpy :http://sourceforge.net/projects/numpy/files/NumPy/1.8.1/ 下载下面的numpy-1. ...
最新文章
- Warshall算法多源点之间最短路径的算法最短距离
- 一图带你入门Linux 存储I/O栈
- Android 颜色渲染(五) LinearGradient线性渲染
- Mallet机器语言工具包-入门测试
- 均差定义及性质(python实现)
- 【STM32 .Net MF开发板学习-21】蓝牙遥控智能小车(PC模式)
- Python 开发的 10 个小贴士,你知道几个?
- 微信公众平台-杂项:小程序导航
- 计算机二级vb2003年4月考试题,2003年4月全国计算机等级考试二级vb笔试真题附答案...
- ucore和linux区别,附录 - 附录A—ucore历史 - 《操作系统的基本原理与简单实现》 - 书栈网 · BookStack...
- java character类
- 非寻常实习记Ⅱ:改变中的快乐成长
- 给mac配置adb 路径
- 视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版
- 代表性的神经网络模型分类
- windows系统bat批处理 windows 关机,重启,锁定,休眠,注销
- 中国新一代海洋综合科考船“科学”号返回母港
- android studio如何重启,从Android Studio重新启动ADB(Restart ADB from Android Studio)
- 集成极光推送和厂商通道相关总结
- pkg打包node工程
热门文章
- 机器视觉光源的选型要领
- 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】
- JavaSE自学笔记016_Real(多线程)
- android功能_自动切换APP图标,节假日图标自动变化
- nginx 配置优化的几个参数
- 计算机网络第一章作业(第8版 谢希仁)
- 电信天翼云搭建Halo博客
- 平衡小车c语言程序,【全部开源】两轮平衡小车(原理图、PCB、程序源码、BOM等)...
- 开发Python用什么工具好?
- mib2c : You didn‘t give mib2c a valid OID to start with.解决