Я пытаюсь согласовать некоторые данные, которые приблизительно гауссовы, с функцией в python, используя метод curve_fit. Для начальных предположений параметров я вычислил среднее значение и стандартное отклонение данных. Тем не менее, я очень плохо себя чувствую и не знаю почему. Это мой код:
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
import math
def func(x, mu, sig):
return (1./(sig*math.sqrt(2*math.pi)))*np.exp(-np.power(x-mu,2.)/(2*np.power(sig, 2.)));
xdata = np.linspace(4, 14, 21)
ydata = np.array([0.2,0.8,1.8,1.9,5.9,7,11,12.6,14,13.3,11.8,9.3,5.2,3.1,1.5,0.7,0.4,0.1,0.3,0.1,0.1])
plt.plot(xdata, ydata, 'b-', label='data')
popt, pcov = curve_fit(func, xdata, ydata,[4.8,5.1])
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')
Встроенная модель (красного цвета) выглядит следующим образом: введите описание изображения здесь