【发布时间】:2020-06-27 16:12:46
【问题描述】:
我有数据我正在尝试对其进行指数拟合,但该数据并不理想,但是当使用 JMP 的内置曲线拟合函数时,它可以按预期工作,并且我得到了我的数据的一个很好的近似值(请参见下图, JMP 拟合曲线指数 3P)。
我知道尝试使用 python 库 scipy.optimize 和 curve_fit 函数来复制它,如here 所述。然而,这会产生非常不同的曲线,请参见下文。
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))
【问题讨论】:
-
您拟合指数曲线,这通常需要良好的初始猜测才能实现精确拟合。其他方法是记录您正在拟合的功能。
-
任何想法如何实现良好的初始猜测?对于 Asymptote,平均值应该足够接近,但不确定 b/c 的规模或增长率?
标签: python scipy exponential sas-jmp