could you please help me deal with Nans in my case?My code works fine if the B value obtained is a positive value but throws Nan values error if its negative.the data in the excel sheet is attached.
the plot obtained when b value is positive is also attached.
import matplotlib.pyplot as plt
import pandas as pd
from lmfit import Model
import numpy as np
def ssexp_if(x, a, b, c):
arg = (b * x) ** c
g = a * np.exp(-2 * arg)
return g
datafile = pd.read_excel(r'C:\Users\Desktop\VIP_SSexp_curvefitting\Trial10.xls')
x = datafile.iloc[ : , 0]
y = datafile.iloc[ : , 1]
gmodel = Model(ssexp_if)
first = 5 #change the index after inserting a heading to the excel
last = 89
index = 10
xdatam = x[first:last]
ydatam = y[first:last]
listfirst =6
a = np.mean(ydatam[first+listfirst:first+10+listfirst])
b = (np.log(ydatam[first+listfirst]/ydatam[index+first+listfirst]))/(2*(xdatam[index+first+listfirst]-xdatam[first+listfirst]))
c = 1
params = gmodel.make_params()
params = gmodel.make_params(a=a, b=b, c=c)
yfit = gmodel.eval(params, x=x)
#print(pd.isnull(x))
result = gmodel.fit(yfit, params, x=x, nan_policy='raise')
plt.semilogx(x, y, 'bo')
#plt.semilogx(x, result.init_fit, 'k--',)
plt.semilogx(x, result.best_fit, 'r-')
plt.show()
C:\UsersycharmProjects\CurveFitting_Python\venv\Scripts\python.exe C:/Users/ifosys/PycharmProjects/CurveFitting_Python/CurveFitting_Lmfit.py
C:/Users/PycharmProjects/CurveFitting_Python/CurveFitting_Lmfit.py:9: RuntimeWarning: overflow encountered in exp
g = a * np.exp(-2 * arg)
Traceback (most recent call last):
File "C:/Users/PycharmProjects/CurveFitting_Python/CurveFitting_Lmfit.py", line 32, in <module>
result = gmodel.fit(yfit, params, x=x, nan_policy='raise')
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\lmfit\model.py", line 873, in fit
output.fit(data=data, weights=weights)
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\lmfit\model.py", line 1217, in fit
_ret = self.minimize(method=self.method)
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\lmfit\minimizer.py", line 1811, in minimize
return function(**kwargs)
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\lmfit\minimizer.py", line 1364, in leastsq
lsout = scipy_leastsq(self.__residual, variables, **lskws)
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\scipy\optimize\minpack.py", line 383, in leastsq
shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\scipy\optimize\minpack.py", line 27, in _check_func
res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\lmfit\minimizer.py", line 517, in __residual
nan_policy=self.nan_policy)
File "C:\Users\PycharmProjects\CurveFitting_Python\venv\lib\site-packages\lmfit\minimizer.py", line 2021, in _nan_policy
raise ValueError("The input contains nan values")
ValueError: The input contains nan values
Process finished with exit code 1