Попытка логарифмического подбора для набора данных с использованием опубликованных кодов. Я продолжаю получать Optimal parameters not found: Number of calls to function has reached maxfev = 800
. Вы можете мне помочь
1. Устранить ошибку
2. Если уравнение, которое я использую, является хорошим для текущего набора данных
3. Предложить альтернативный метод?
Dataset
Years Values
0 2000 23.0
1 2001 27.5
2 2002 46.0
3 2003 56.0
4 2004 64.8
5 2005 71.2
6 2006 80.2
7 2007 98.0
8 2008 113.0
9 2009 155.8
10 2010 414.0
11 2011 2297.8
12 2012 3628.4
13 2013 16187.8
14 2014 25197.8
15 2015 42987.8
16 2016 77555.5
17 2017 130631.9
X = np.array(df.Years, dtype = float)
y = np.array(df.Values, dtype = float)
def func(x, a, b, c):
return a * np.exp(b * x) + c
popt, pcov = curve_fit(func, X, y)
plt.plot(X, y, 'ro', label="Original data")
plt.plot(X, func(X, *popt), label="Fitted Curve")
plt.legend(loc='upper left')
plt.show()