2015-05-17 38 views
1

我想在python中擬合具有負二項鍊接函數和L1正則化(套索)的廣義線性模型。 MATLAB提供了很好的功能:Lasso Python中的廣義線性模型

lassoglm(X,y, distr) 

其中頗可泊松,二項式等

我看了一下這兩個statmodels和scikit學習,但我沒有找到任何準備使用功能或示例這可能會指導我尋求解決方案。 在MATLAB似乎他們減少這種:

min (1/N * Deviance(β0,β) + λ * sum(abs(β))) 

其中越軌行爲取決於鏈接功能。

是否有與scikit或statsmodels或者我應該去cvxopt輕鬆地實現這種方式?

+0

只是供參考,它被稱爲scikit學習,而不是scikit。 Scikit-learn有一個平方損失的套索模型(例如高斯噪聲假設)和l1正則化。還有l1正則化的logistic迴歸,其中logloss被優化。 – eickenberg

+0

謝謝,我知道它,但在我的問題負二項部分是必不可少 – Gioelelm

+0

Scikit學習不提供這種類型的模型。 – eickenberg

回答

0

statsmodels已經有一段時間了離散模型,包括一個NegativeBinomial fit_regularized

http://statsmodels.sourceforge.net/devel/generated/statsmodels.discrete.discrete_model.NegativeBinomial.fit_regularized.html

不具有的文檔字符串(我剛看到)。泊松的文檔字符串具有相同的信息http://statsmodels.sourceforge.net/devel/generated/statsmodels.discrete.discrete_model.Poisson.fit_regularized.html 並且應該在文檔或單元測試中提供一些示例。

它使用一個內部算法要麼SciPy的slsqp或可選地,如果安裝了,cvxopt。與最速下降或協調下降方法相比,這僅適用於特徵/解釋變量數量不太大的情況。

與彈力網座標爲下降GLM是在進步拉動請求中的工作,將最有可能在statsmodels 0.8可用。

+0

好,但我不完全得到如何檢索參數後,我做的: 'NB = NBmodel(mesurements,類loglike_method = 'NB2'); nb.fit()' – Gioelelm

+0

您需要查看文檔中的一些示例以瞭解statsmodels如何工作。 (result.params)''print(results.summary()'和'dir(results)' – user333700

+0

謝謝。我沒有正確地嘗試調用nb.params。無論如何,實現並不會收斂,即使在正則化的微不足道的情況下,擬合給出了負面參數,這也發生在泊松...非常奇怪 – Gioelelm