利用Python的scipy包实现曲线的拟合
发布时间:2020-12-20 10:56:32 所属栏目:Python 来源:网络整理
导读:调用scipy包中的curve_fit,可以根据指定的函数形式,对一组已知自变量和因变量的数据进行曲线拟合。 import numpy as npimport pandas as pdimport matplotlib.pyplot as plt from scipy.optimize import curve_fit# 自定义函数def func(x,a,b): return a*
调用scipy包中的curve_fit,可以根据指定的函数形式,对一组已知自变量和因变量的数据进行曲线拟合。 import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.optimize import curve_fit # 自定义函数 def func(x,a,b): return a*pow(x,b) data = pd.read_excel(r‘C:UsersYBMDesktopdata.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 np import pandas as pd import matplotlib.pyplot as plt from scipy.optimize import curve_fit def func(x,b,c): return a * np.exp(-b * x) + c xdata = 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_noise plt.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<1 popt,pcov = curve_fit(func,bounds=(0,[3.,2.,1.])) plt.plot(xdata,label=‘fit‘) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |