Я пытаюсь создать кривую, подходящую для моей гистограммы, используя scipy.optimize.curve_fit. Вот пример кода я работаю над:Как определить функцию для scipy.optimize.curve_fit?
def gaussian(x,a,b,c):
return a * exp(-(x - b)**2/c**2)
def curvefit(gaussian, x, y,sigma):
popt, pcov = curve_fit(gaussian, x, y, p0 = [1, mean, sigma])
image = plt.plot(x, gauss_function(x, *popt), label='fit')
где х Binned х значений (выход из моей гистограммы), у есть вес, соответствующие этим Binned х (выход из гистограммы, а). Во время выполнения кода, я получаю сообщение об ошибке:
global name 'a' is not defined
И я понимаю, почему эта ошибка пробуждать, но не может найти способ, чтобы исправить это. Поскольку curve_fit имеет 1-й параметр как вызываемую функцию, я не знаю, как указать это в Python (кажется, что программа считывает вывод моей гауссовой функции в качестве значения). Большое спасибо.
Когда я пытаюсь это сделать, мне нужно определить 'mean' или передать его как параметр' curvefit', иначе я получу ошибку, которая 'mean' не определена. Вы пробовали это? Кроме того, 'gauss_function' должен быть' gaussian'? –
Просьба представить полный рабочий пример, который приведет к ошибке. – egpbos