Я пытаюсь использовать модуль scipy.optimize
.
Моя экспоненциальная функция:
a - (a - b) np.exp( -(c + Q / V) * t )
Мне нужно найти a
, b
, c
из уравнения путем оптимизации.
V = 1200 # constant
мой фрейм данных выглядит так:
time(t) value score(Q)
1.0 2.347 4500
2.0 2.345 4600
3.0 2.523 4655
4.0 2.723 4500
...
...
100.0 5.6787 7000
...
Значения в поле значений увеличиваются линейно.
Моя подходящая функция для приведенной выше экспоненты:
def my_exp(Q, t, a, b, c): #just added Q here
V = 1280
return a - (a - b) np.exp( -(c + Q / V) * t )
# Q = 5000 #mean value from column score
# getting values
c, cov = curve_fit(lambda t, a, b, c: my_exp(Q, t, a, b, c), df['time'], df['value'])
сценарий 1: когда столбец оценки не указан, при условии, что константа должна быть передана как (например: Q = 5000
). Я попытался взять среднее значение из серии оценок, и это работает.
сценарий 2: когда указан столбец оценок, отправьте ряд оценок в экспоненциальную функцию Q
, которая должна предоставлять значение оценки в каждый момент времени.
Как я могу отправить значения массива серии оценок в экспоненциальную функцию Q
, чтобы получить оптимизированное значение?
Это правильный способ сделать curve_fit
для вышеупомянутых данных или мне нужно следовать любым другим моделям подбора кривой?