我想將數據擬合到Logistic(Sigmoid)函數並獲得無限協方差。我有2個參數,並假設我有5個數據點。我的數據在變量xdata
和ydata
中。這裏是產生完全相同的警告一個代碼示例:scipy.optimize.curve_fit未能估計協方差
from scipy.optimize import curve_fit
def sigmoid(x, x0, k):
y = 1/(1 + np.exp(-k*(x-x0)))
return y
xdata = np.array([ 5., 75., 88., 95., 96.])
ydata = np.array([ 0.04761905, 0.02380952, 0, 0.04761905, 0])
popt, pcov = curve_fit(sigmoid, xdata, ydata)
賦予pcov
是
array([[ inf, inf],
[ inf, inf]])
和以下警告:
OptimizeWarning:協方差參數不能估計爲 category = OptimizeWarning)
我看到一個導致相同問題的相關問題here,但問題是數據點和參數的數量是相同的,這在我的情況中是不正確的。
編輯:注意上面我所提到我有個數據點,但是這僅僅是例子。實際上有60個。這裏是原始數據的圖表,看到確實sigmoid功能似乎是合適的:
您嘗試使用的數據與直線的一組點不同嗎?你能提供真實數據的樣本嗎?或者你是否真的試圖將一個sigmoid放入一個線性數據集? –
謝謝@IgnacioVergaraKausel。我剛剛添加了示例數據 – splinter