Вместо вызова метода sendGetRequest () в прослушивателе просмотра пейджера, вызовите свой запрос GET в методе onCreateView в вашем фрагменте фрагмента class_two. Причина этого заключается в том, что вы гарантируете, что все ваши представления в фрагментаторе были правильно инициализированы через события жизненного цикла фрагмента.
Если вы отсортируете данные по x перед запуском алгоритма подбора кривой, вы получите воспроизводимые результаты:
from scipy.optimize import curve_fit
import numpy as np
def sigmoid(x, b, mu, max_kr):
if isinstance(x, list) or isinstance(x, np.ndarray):
return [sigmoid(xx, b, mu, max_kr) for xx in x]
else:
return max_kr/(1+10**(mu*(-x+b)))
def fit_sigmoid(points):
points = points[points[:, 0].argsort()]
popt, pcov = curve_fit(sigmoid, points[:, 0], points[:, 1], bounds=([-np.inf, 0, 0], [np.inf, np.inf, 1]), ftol=len(points)*1e-6)
b, mu, max_kr = popt
return mu
points1 = np.array([
(4.0, 1.0),
(1.0, 8.340850913002296e-05),
(3.0, 0.9793319563421965),
(0.0, 8.340850913002296e-05),
(-1.0, 0.0),
(2.0, 0.010306481917677357)
])
points2 = np.array([
(4.0, 1.0),
(-1.0, 0.0),
(3.0, 0.9793319563421965),
(0.0, 8.340850913002296e-05),
(1.0, 8.340850913002296e-05),
(2.0, 0.010306481917677357)
])
print(fit_sigmoid(points1))
print(fit_sigmoid(points2))
# 15.110203876634552
# 15.110203876634552