Pandalar / Statsmodel / Scikit-öğren


41
  1. Pandalar, Statsmodels ve Scikit-makine öğrenmesi / istatistiksel işlemlerin farklı uygulamalarını mı öğreniyorlar ya da bunlar birbirlerini tamamlayıcı mı?

  2. Bunlardan hangisi en kapsamlı işlevselliğe sahiptir?

  3. Hangisi aktif olarak geliştirilir ve / veya desteklenir?

  4. Lojistik regresyon uygulamak zorundayım. Bunlardan hangisine kullanmam gerektiği konusunda herhangi bir öneriniz var mı?

Yanıtlar:


33
  1. Scikit-learn (sklearn), listelenen üç programdan makine öğrenmesi için en iyi seçimdir. Pandalar ve Statsmodels bazı öngörücü öğrenme algoritmaları içermesine rağmen, henüz üretime hazır değil / gizlenmemiş durumda. Genellikle, yazarlar farklı projeler üzerinde çalışacakları için kütüphaneler ücretsizdir. Örneğin, son zamanlarda Pandas'in Veri Çerçeveleri Statsmodels'e entegre edildi. Sklearn ve Pandalar arasında bir ilişki mevcut değil (henüz).

  2. İşlevselliği tanımlayın. Hepsi koşuyor. En yararlı olanı kastediyorsanız, bu uygulamanıza bağlıdır. Python'a (dataframe) çok yeni bir veri yapısı eklediği için kesinlikle Pandas'a +1 verecektim. Pandalar da muhtemelen en iyi API'ye sahiptir.

  3. Pandaların en iyi kod tabanına sahip olduğunu söyleyebilirim ama hepsi aktif olarak destekleniyor. Sklearn ve Pandalar Statsmodels'ten daha aktifler.

  4. Açık seçim Sklearn. Nasıl gerçekleştirileceği kolay ve net.

    from sklearn.linear_models import LogisticRegression as LR
    logr = LR()
    logr.fit( X, Y )
    results = logr.predict( test_data)

5
Aşağıdaki uzun açıklamayı mutlaka okuyun!
dartdog

4
Bu cevap Pandaların temelde veri manipülasyonu için olduğunu (örneğin, indeksleme, seçme, toplama) açıklamayı ihmal eder, oysa diğer ikisi bina modelleri içindir (örneğin, tahmin veya çıkarım için).
Nathan Gould

Sklearn'ü bir yıldan uzun bir süredir kullanıyorum ve harikaydı, şimdi proje büyüdü, Panda'nın mükemmel veri yapılarını kullanma gereği duyuyorum, bu yüzden uzun vadede tamamlayıcı olduklarını düşünüyorum.
küstahça

Muhtemelen bu son zamanlarda değişti, ancak ithalat ifadesinde, linear_model(tekil) olmalı ve olmamalıdır linear_models.
Vishal

75

Kabul edilen cevabı biraz nitelemek ve netleştirmek istiyorum.

Üç paket birbirlerini tamamlayıcıdır, çünkü farklı alanları kapsar, farklı ana hedefleri vardır veya makine öğrenimi / istatistiklerinde farklı alanları vurgularlar.

  • pandalar temel olarak doğrudan veri üzerinde işlem yapan ve çalışan bir pakettir.
  • Scikit-learn, genellikle büyük ve seyrek verilere sahip öngörücü modellemeye vurgu yaparak makine öğrenmesi yapıyor
  • statsmodels "geleneksel" istatistik ve ekonometri yapıyor, parametre tahmini ve (istatistiksel) testler üzerinde çok daha fazla duruluyor.

statsmodels bağımlılık olarak pandalara sahiptir, pandalar isteğe bağlı olarak bazı istatistikler için istatistik modülleri kullanır. statsmodels, patsyR gibi modellere benzer bir formül arayüzü sağlamak için kullanıyor .

Scikit-learn ve istatistik modelleri arasında, ancak farklı amaçlara sahip modellerde bazı örtüşmeler var. bkz . İki Kültür: istatistik vs. makine öğrenmesi?

istatistik modelleri hakkında biraz daha

statsmodels, en düşük geliştirme aktivitesine ve üçünün en uzun sürüm döngüsüne sahip. istatistik modellerinin birçok katkısı var ama maalesef hala sadece iki “koruyucu” (onlardan biriyim.)

İstatistik modellerinin çekirdeği "üretime hazır" dır: doğrusal modeller, sağlam doğrusal modeller, genelleştirilmiş doğrusal modeller ve ayrık modeller birkaç yıldan beri vardır ve Stata ve R'e karşı doğrulanmıştır. İstatistikmodels ayrıca AR, ARMA ve Başka hiçbir python paketinde bulunmayan VAR (vektör otoregressive) regresyonu.

Scikit-learning'de makine öğrenmesi yaklaşımı ile istatistik modellerinde istatistik ve ekonometri yaklaşımı arasındaki bazı farklılıkları göstermek için bazı örnekler:

Basit Doğrusal Regresyon, OLSçok sayıda tahmin sonrası analiz sistemine sahiptir: http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html , parametreler, outlier ölçümleri ve şartname testleri http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests

Lojistik Regresyon istatistik Logitmodellerinde kesikli model olarak veya genelleştirilmiş doğrusal modelde ( GLM) bir aile olarak yapılabilir . http://statsmodels.sourceforge.net/devel/glm.html#module-reference

GLMolağan aileleri içerir, ayrık modeller Logitayrıca Probitmultinomial ve count regresyon da içerir .

lojit

Kullanımı Logitbu kadar basittir: http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.html

>>> import statsmodels.api as sm
>>> x = sm.add_constant(data.exog, prepend=False)
>>> y = data.endog

>>> res1 = sm.Logit(y, x).fit()
Optimization terminated successfully.
         Current function value: 0.402801
         Iterations 7
>>> print res1.summary()
                           Logit Regression Results                           
==============================================================================
Dep. Variable:                      y   No. Observations:                   32
Model:                          Logit   Df Residuals:                       28
Method:                           MLE   Df Model:                            3
Date:                Sat, 26 Jan 2013   Pseudo R-squ.:                  0.3740
Time:                        07:34:59   Log-Likelihood:                -12.890
converged:                       True   LL-Null:                       -20.592
                                        LLR p-value:                  0.001502
==============================================================================
                 coef    std err          z      P>|z|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1             2.8261      1.263      2.238      0.025         0.351     5.301
x2             0.0952      0.142      0.672      0.501        -0.182     0.373
x3             2.3787      1.065      2.234      0.025         0.292     4.465
const        -13.0213      4.931     -2.641      0.008       -22.687    -3.356
==============================================================================
>>> dir(res1)
...
>>> res1.predict(x.mean(0))
0.25282026208742708
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.