我有一些我想拟合指数的数据,该数据并不理想,但是当使用JMP的内置曲线拟合函数时,它可以按预期工作,并且我可以很好地近似我的数据(请参见下面的图,JMP拟合曲线指数3P)。
我知道尝试使用python库scipy.optimize和here中描述的curve_fit函数来复制它。但是,这产生了截然不同的曲线,请参见下面。
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
df = pd.read_csv('test.csv', sep = ',' ,index_col = None, engine='python')
def exponential_3p(x, a, b, c):
return a + b * np.exp(c * x)
popt, pcov = curve_fit(exponential_3p,df.x,df.y)
a = popt[0]
b = popt[1]
c = popt[2]
plt.plot(df.x,df.y)
plt.plot(df.x,exponential_3p(df.x, a, b, c))
您还是scipy.optimize.curve_fit
不可理解的愚蠢的另一个受害者。