我有一組數據點(下面的代碼中的x和y),我試圖通過我的要點創建最適合的線性線。我正在使用scipy.optimize.curve_fit
。我的代碼產生一條線,但不是最適合的線。我試着給函數模型參數用於我的漸變和截取,但每次產生完全相同的線條,不適合我的數據點。爲什麼scipy.optimize.curve_fit不會爲我的觀點提供最適合的線條?
藍點是我的數據點的紅線應安裝:
如果有人能指出我要去的地方錯了,我會非常感激:
import numpy as np
import matplotlib.pyplot as mpl
import scipy as sp
import scipy.optimize as opt
x=[1.0,2.5,3.5,4.0,1.1,1.8,2.2,3.7]
y=[6.008,15.722,27.130,33.772,5.257,9.549,11.098,28.828]
trialX = np.linspace(1.0,4.0,1000) #Trial values of x
def f(x,m,c): #Defining the function y(x)=(m*x)+c
return (x*m)+c
popt,pcov=opt.curve_fit(f,x,y) #Returning popt and pcov
ynew=f(trialX,*popt)
mpl.plot(x,y,'bo')
mpl.plot(trialX,ynew,'r-')
mpl.show()
我自己設法弄清楚了這個問題。 x被定義爲一個列表,而不是一個數組。我通過將np.array放在定義的x和y數組的前面來修復它。 –
我得出同樣的結論李子,我應該先看到這個評論!下次發生這種情況時,請隨時將其發佈爲您自己問題的答案並接受。 – Hooked
請注意,這已被修補:https://github.com/scipy/scipy/issues/3037 – Hooked