我不能得到這個棚車適合的工作...我得到「OptimizeWarning:參數的協方差無法估計 類別= OptimizeWarning)」,輸出係數不會超出開始的猜測。問題配件使用SciPy的的曲線擬合在Python棚車功能
import numpy as np
from scipy.optimize import curve_fit
def box(x, *p):
height, center, width = p
return height*(center-width/2 < x)*(x < center+width/2)
x = np.linspace(-5,5)
y = (-2.5<x)*(x<2.5) + np.random.random(len(x))*.1
coeff, var_matrix = curve_fit(box, x, y, p0=[1,0,2])
輸出係數是[1.04499699,0.,2],而不是第三個甚至沒有改變。
我懷疑這個函數形式不適合curve_fit使用的levenberg-marquardt算法,這很麻煩,因爲我喜歡這個函數。在mathematica中,指定蒙特卡羅優化將是微不足道的。
你所說的「工作」是什麼意思?這是一個警告,而不是一個錯誤,並告訴你一些關於估計值的信心。但是,當我運行你提供的代碼片段時,我對數據有合理的適應性。 – bnaecker
我已經在上面添加了更多細節。基本上,係數不會超出初始猜測。 – ARN
您發佈的代碼似乎缺少一些導入語句,無法運行。 –