У меня есть данные, к которым я пытаюсь вписать экспоненту, эти данные не идеальны, однако при использовании встроенной в JMP функции подбора кривой она работает, как и ожидалось, и я получаю хорошее приближение к моим данным (см. Рисунок ниже, Экспериментальная кривая JMP Fit 3P).
Экспоненциальная кривая JMP Fit Curve 3P
Я знаю, что пытался воспроизвести это с помощью библиотеки python scipy.optimize с помощью функции 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 Exponential