Я взял несколько весов у коллег, загрузил 1000 прогонов, где каждый прогон отбирает 3 значения из исходных данных и добавляет минимум, а сейчас я пытаюсь изогнуть эти значения для экспоненциального подбора.Когда я строю гистограмму, это не довольно экспоненциальное значение, но я думаю, что я делаю что-то не так, потому что я просто получаю плоскую линию.
Образец значения ниже содержит 1000 выборок (каждаяминимальное значение выборки 3 из исходных данных)
figure = plt.figure(figsize=(10, 6)) # first element is width, second is height.
axes = figure.add_subplot(1, 1, 1)
#axes.hist( sample, density=True, color="dimgray") # a density
axes.set_ylabel( "Density")
axes.set_xlabel( "Weights")
axes.set_title( "Coworker Weights")
ys, bins = np.histogram(sample,bins = 7)
axes.plot(bins[:-1],ys)
print(bins,ys)
Этот график выходит на следующую картинку, которая выглядит некрасиво, но я все же думаю, что она должна соответствовать кривой:
Далее я пытаюсь уместить данные:
def func(x, a, b, c):
return a * np.exp(-b * x) + c
weights = np.array(weights)
popt, pcov = curve_fit(func, bins[:-1], ys)
print(popt)
figure = plt.figure(figsize=(10, 6)) # first element is width, second is height.
axes = figure.add_subplot(1, 1, 1)
plt.plot(weights, func(weights, *popt))
Массив весов - мои исходные данные.Вывод, который я получаю, - это просто плоская линия, а коэффициенты popt равны [1,1,143]
.Что я делаю не так?