900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【python】用python对数据进行拟合求函数表达式的方法

【python】用python对数据进行拟合求函数表达式的方法

时间:2019-04-26 12:13:04

相关推荐

【python】用python对数据进行拟合求函数表达式的方法

方法一、用多项式函数进行拟合

进行多项式拟合,数学上可以证明,这里不再赘述原理、直接进行应用,任意函数都可以表示为多项式形式的example如下:

import numpy as npimport matplotlib.pyplot as plt#定义x、y散点坐标——你自己的数据x = [10,20,30,40,50,60,70,80]x = np.array(x)print('x is :\n',x)num = [174,236,305,334,349,351,342,323]y = np.array(num)print('y is :\n',y)#用n次多项式拟合,此处n = 3,设置为3-7都比较合理,视案例复杂度以及需求而定f1 = np.polyfit(x, y, 3)print('f1 is :\n',f1)#拟合y值yvals = np.polyval(reg, x)print('yvals is :\n',yvals)#绘图plot1 = plt.plot(x, y, 's',label='original values')plot2 = plt.plot(x, yvals, 'r',label='polyfit values')plt.xlabel('x')plt.ylabel('y')plt.legend(loc=4) #指定legend的位置右下角plt.title('polyfitting')plt.show()

方法二、给出具体的函数形式(可以是任意的,只要你能写的出来 下面的func就是),用最小二乘的方式去逼近和拟合,求出函数的各项系数

##使用curve_fitimport numpy as npimport matplotlib.pyplot as pltfrom scipy.optimize import curve_fit#自定义函数 e指数形式def func(x, a, b,c):return a*np.sqrt(x)*(b*np.square(x)+c)#定义x、y散点坐标x = [20,30,40,50,60,70]x = np.array(x)num = [453,482,503,508,498,479]y = np.array(num)#非线性最小二乘法拟合popt, pcov = curve_fit(func, x, y)#获取popt里面是拟合系数print(popt)a = popt[0] b = popt[1]c = popt[2]yvals = func(x,a,b,c) #拟合y值print('popt:', popt)print('系数a:', a)print('系数b:', b)print('系数c:', c)print('系数pcov:', pcov)print('系数yvals:', yvals)#绘图plot1 = plt.plot(x, y, 's',label='original values')plot2 = plt.plot(x, yvals, 'r',label='polyfit values')plt.xlabel('x')plt.ylabel('y')plt.legend(loc=4) #指定legend的位置右下角plt.title('curve_fit')plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。