簡體   English   中英

python曲線擬合結果匯總

[英]python curve fitting with results summary

抱歉,我對python還是很陌生,希望有人可以幫助我解決曲線擬合問題...

我有一個MxN數據幀“數據”,其中M是樣本數,N是變量數(10)。 我有一個Mx1因變量“分形”,它是0到1之間與每個樣本相對應的分數。

我知道如何輕松地在自變量N和因變量小數之間進行多元線性回歸,但是,我將回歸包裹在S型回歸中,以將響應保持在0到1之間。

我能夠像這樣執行此操作...

def sigmoid(x,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10):
    y = 1 / (1 + np.exp(- (b0 + b1*x[:,0] + b2*x[:,1] + b3*x[:,2] + b4*x[:,3] + b5*x[:,4] +
                       b6 * x[:,5] + b7*x[:,6] + b8*x[:,7] + b9*x[:,8] + b10*x[:,9])))
    return y

popt, pcov = curve_fit(sigmoid,data,fractions)

'''use coefficients from curve_fit to estimate new fraction from new 1xN data'''
newFraction = sigmoid(newData, *popt)

但是,我想為特征選擇實施某種逐步多元回歸,最好基於AIC。 我發現以下使用python的方法...

http://scikit-learn.org/stable/modules/generation/sklearn.feature_selection.RFE.html https://planspace.org/20150423-forward_selection_with_statsmodels/ https://datascience.stackexchange.com/questions/24405/how使用sklearn進行逐步回歸/ 24447#24447

但是所有這些方法都依賴於使用涉及.fit()方法的回歸。 有沒有一種方法可以使用任何.fit()方法(例如statsmodels或lmfit)來實現上述模型? 我也研究了套索類型的方法,但是,再次無法弄清楚如何實現我的功能。

我認為您應該可以使用lmfit執行類似的操作(不完整,因為您的示例不完整):

from lmfit import Model
def sigmoid(x,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10):
    y = 1 / (1 + np.exp(- (b0 + b1*x[:,0] + b2*x[:,1] + b3*x[:,2] + b4*x[:,3] + b5*x[:,4] +
                       b6 * x[:,5] + b7*x[:,6] + b8*x[:,7] + b9*x[:,8] + b10*x[:,9])))
    return y

smodel = Model(sigmoid)
params = smodel.make_params(b0=1, b1=0, b2=0.1, b3=0.01, b4=0.01, b5=0.01, 
                            b6=0.01, b7=0.01, b8=0.01, b9=0.01, b10=0.01)

result = smodel.fit(data, params, x=x)

這將通過最小化卡方來實現。

我相信,對於任何特定的擬合(將有固定數量的數據點和固定數量的變量),最小化卡方也將最小化AIC(因為卡方是正定的,並且AIC = 2*Nvarys + Ndata * log(chi_square / Ndata)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM