Почему в этом коде curve_Fit из scipy.optimze в python ведет себя странно? - PullRequest
0 голосов
/ 24 марта 2020

У меня странная проблема с очень простым фрагментом кода. Я посмотрел на бесчисленные примеры, и все они, кажется, работают нормально, но по какой-то причине мой не ...

То, чего я пытаюсь достичь, - это установить точку, в которой построение графика регрессии модель начинается. Я хочу, чтобы это было, скажем, 5000, а не ноль. На противоположном конце все работает нормально, т. Е. Если установить регрессию так, чтобы она заканчивалась в нужной точке, она будет работать, но запуск в любой другой точке, кроме нуля, не работает. Если я установлю «start» xFit1 как ненулевое значение, масштабирование будет очень странным, а начало графика просто останется равным нулю. Что может происходить, есть идеи?

AVG_PNTSx = []
u = 0
p = 0
S_O = False

#Array creation

#Add each sample preparation result here manually:  
AVG_PNTSy = [14, 30, 64, 130, 300, 400, 1220, 2660, 4939, 10100, 10600, 10900, 10000, 22150, 45000]

#Auto creation of x-array based on y-array
for i in range(len(AVG_PNTSy)):
    u = (i*20001)+10000
    AVG_PNTSx.append(u)

#Exp Regression

def func(x,a,b):
    return a*np.exp(b*x)

xFit1 = np.arange(start,300000,1)

init_guess = [1,0.00001]

popt, pcov = curve_fit(func, AVG_PNTSx, AVG_PNTSy,init_guess)

#Plots
p3, = plt.plot((func(xFit1,*popt)))
plt.plot(AVG_PNTSx,AVG_PNTSy,"ro")  

Заранее спасибо!

1 Ответ

0 голосов
/ 24 марта 2020

При построении графика вы забыли поставить X.

Решение:

xFit2=np.arange(50000, 300000, 1)

#Plots
p3, = plt.plot(xFit2,(func(xFit2,*popt)))
plt.plot(AVG_PNTSx,AVG_PNTSy,"ro")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...