小白的学习笔记,欢迎各位大神批评指正。

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)相关推荐

  1. scipy.optimize.curve_fit函数用法解析

    scipy.optimize.curve_fit函数用法解析 转:https://zhuanlan.zhihu.com/p/144353126 optimize.curve_fit()函数,用于日常数 ...

  2. scipy中的scipy.optimize.curve_fit

    scipy中的scipy.optimize.curve_fit 这里写目录标题 scipy中的scipy.optimize.curve_fit 参数 Return scipy.optimize.``c ...

  3. 为python安装numpy和scipy(federo)

    为了进行数值计算,例如积分等等,需要安装numpy和scipy,其中scipy是依赖于numpy的,所以先要装numpy. 1, 通过下载http://pypi.python.org/pypi/num ...

  4. python安装numpy-如何为python安装numpy和scipy?

    我厌倦了尝试为phyton 2.7.5安装numpy和scipy,我需要这个版本的python,因为我的最终目标是安装类(http://class-code.net/)和montepython(htt ...

  5. windows64位环境下python安装numpy、scipy和matplotlib

    最近想使用python做一些机器学习方向的算法实现,使用python做数据分析和矩阵运算什么的常需要三个库文件:numpy.scipy和matplotlib,于是着手安装. 我自己机子的配置是win8 ...

  6. 简述 Python 的 Numpy、SciPy、Pandas、Matplotlib 的区别

    From:https://www.jianshu.com/p/32cb09d84487 Numpy:基础的数学计算模块,以矩阵为主,纯数学. SciPy:基于Numpy,提供方法(函数库)直接计算结果 ...

  7. python numpy安装windows_windows下安装python的numpy,scipy,sklearn

    前提环境(根据自己所安装的为准): python3.7 windows10 首先,要先下载好这三种包下载地址为 https://www.lfd.uci.edu/~gohlke/pythonlibs/ ...

  8. windows下python安装Numpy和Scipy模块

    2019独角兽企业重金招聘Python工程师标准>>> Numpy是什么? 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplo ...

  9. windows下python安装Numpy、Scipy、matplotlib模块

    python 2.7 针对2.7的软件. numpy :http://sourceforge.net/projects/numpy/files/NumPy/1.8.1/   下载下面的numpy-1. ...

最新文章

  1. Warshall算法多源点之间最短路径的算法最短距离
  2. 一图带你入门Linux 存储I/O栈
  3. Android 颜色渲染(五) LinearGradient线性渲染
  4. Mallet机器语言工具包-入门测试
  5. 均差定义及性质(python实现)
  6. 【STM32 .Net MF开发板学习-21】蓝牙遥控智能小车(PC模式)
  7. Python 开发的 10 个小贴士,你知道几个?
  8. 微信公众平台-杂项:小程序导航
  9. 计算机二级vb2003年4月考试题,2003年4月全国计算机等级考试二级vb笔试真题附答案...
  10. ucore和linux区别,附录 - 附录A—ucore历史 - 《操作系统的基本原理与简单实现》 - 书栈网 · BookStack...
  11. java character类
  12. 非寻常实习记Ⅱ:改变中的快乐成长
  13. 给mac配置adb 路径
  14. 视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版
  15. 代表性的神经网络模型分类
  16. windows系统bat批处理 windows 关机,重启,锁定,休眠,注销
  17. 中国新一代海洋综合科考船“科学”号返回母港
  18. android studio如何重启,从Android Studio重新启动ADB(Restart ADB from Android Studio)
  19. 集成极光推送和厂商通道相关总结
  20. pkg打包node工程

热门文章

  1. 机器视觉光源的选型要领
  2. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】
  3. JavaSE自学笔记016_Real(多线程)
  4. android功能_自动切换APP图标,节假日图标自动变化
  5. nginx 配置优化的几个参数
  6. 计算机网络第一章作业(第8版 谢希仁)
  7. 电信天翼云搭建Halo博客
  8. 平衡小车c语言程序,【全部开源】两轮平衡小车(原理图、PCB、程序源码、BOM等)...
  9. 开发Python用什么工具好?
  10. mib2c : You didn‘t give mib2c a valid OID to start with.解决