调用scipy包中的curve_fit,可以根据指定的函数形式,对一组已知自变量和因变量的数据进行曲线拟合。
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.optimize import curve_fit# 自定义函数def func(x,a,b): return a*pow(x,b)data = pd.read_excel(r‘C:\Users\YBM\Desktop\data.xlsx‘)x = data[‘x‘]y = data[‘y‘]popt,pcov = curve_fit(x,y)a = popt[0]b = popt[1]yvals = func(x,b)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‘)
也可以定义三个参数的函数:
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.optimize import curve_fitdef func(x,b,c): return a * np.exp(-b * x) + cxdata = np.linspace(0,4,50)y = func(xdata,2.5,1.3,0.5)y_noise = 0.2 * np.random.normal(size=xdata.size)ydata = y + y_noiseplt.plot(xdata,ydata,‘b-‘,label=‘data‘)popt,pcov = curve_fit(func,xdata,ydata)a = popt[0]b = popt[1]c = popt[2]yvals = func(xdata,c)plot1 = plt.plot(xdata,label=‘original values‘)plot2 = plt.plot(xdata,label=‘polyfit values‘)# 或:plt.plot(xdata,func(xdata,*popt),‘r-‘,label=‘fit‘)# 限制参数范围:0<a<3,0<b<2, 0<c<1popt,pcov = curve_fit(func,bounds=(0,[3.,2.,1.]))plt.plot(xdata,label=‘fit‘)总结
以上是内存溢出为你收集整理的利用Python的scipy包实现曲线的拟合全部内容,希望文章能够帮你解决利用Python的scipy包实现曲线的拟合所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)