I am trying to fit a data set on exponential funtion. To do this I have created this function to recreate exponential functions:
def exponential(x,a,b,c):
return a*(b**x)+c
I am using the module scipy
. Here the code to do the fit and print it:
def fit_exponential(x_data,y_data,file):
params,paramscov= optimize.curve_fit(exponential, x_data, y_data,p0=[1,2,3])
#Here we calculate the Coeficent of deternination (R²)
#It is a statistical measure of how well the regression predictions approximate the real data points.
residuals = y_data - exponential(x_data, *params)
ss_res = np.sum(residuals**2)
ss_tot = np.sum((y_data-np.mean(y_data))**2)
r_squared = 1 - (ss_res / ss_tot)
print('R²= ',r_squared)
result = print_exponential(*params)
print(result)
#Compound the chart of data and the data with a little text of results
plt.figure(figsize=(6, 4))
plt.plot(x_data, exponential(x_data,*params),label='Fitted function',color='m')
plt.scatter(x_data, y_data, label='Data',color='salmon')
texto='R²= '+str(round(r_squared,5))+'\n'+result
plt.text(x_data[-1]*0.55, y_data[-1]*0.15, texto,verticalalignment='center',bbox=dict(facecolor='m', alpha=0.3))
plt.legend(loc='best')
plt.xlabel('Size N')
plt.ylabel('Steps')
plt.savefig(file)
What I am obtaining is this chart:
As we see the data seems to be exponential but I cant fit a function to it. I have already see some posts, but I couldn't do it.
