Chciałbym zakwalifikować i nieco wyjaśnić przyjętą odpowiedź.
Te trzy pakiety wzajemnie się uzupełniają, ponieważ obejmują różne obszary, mają różne główne cele lub podkreślają różne obszary uczenia maszynowego / statystyki.
- pandy to głównie pakiet do obsługi i obsługi danych bezpośrednio.
- scikit-learn to uczenie maszynowe z naciskiem na modelowanie predykcyjne z często dużymi i rzadkimi danymi
- statsmodels wykonuje „tradycyjne” statystyki i ekonometrię, ze znacznie większym naciskiem na estymację parametrów i testy (statystyczne).
statsmodels ma zależność pand, pandas opcjonalnie używa statsmodels do niektórych statystyk. statsmodels patsy
zapewnia interfejs podobny do modeli jak R.
Modele między scikit-learn i statsmodels pokrywają się, ale z różnymi celami. patrz na przykład Dwie kultury: statystyki czy uczenie maszynowe?
trochę więcej o statsmodels
statsmodels ma najniższą aktywność rozwojową i najdłuższy cykl uwalniania spośród wszystkich trzech. statsmodels ma wielu współpracowników, ale niestety wciąż tylko dwóch „opiekunów” (jestem jednym z nich).
Rdzeń statsmodels jest „gotowy do produkcji”: modele liniowe, solidne modele liniowe, uogólnione modele liniowe i modele dyskretne istnieją już od kilku lat i są weryfikowane względem Staty, a R. statsmodels ma również część analizy szeregów czasowych obejmującą AR, ARMA i Regresja VAR (wektorowa autoregresja), które nie są dostępne w żadnym innym pakiecie Pythona.
Kilka przykładów pokazujących pewne specyficzne różnice między podejściem uczenia maszynowego w scikit-learn a podejściem statystycznym i ekonometrycznym w statsmodels:
Prosta regresja liniowa OLS
, ma dużą liczbę analiz po oszacowaniu
http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html w tym testy parametrów, wartości odstających i testy specyfikacji http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
Regresję logistyczną można wykonać w modelach statystycznych jako Logit
model dyskretny lub jako rodzina w uogólnionym modelu liniowym ( GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
obejmuje zwykłe rodziny, dyskretne modele zawiera oprócz Logit
także Probit
, wielomianu i liczyć regresji.
Logit
Korzystanie Logit
jest tak proste, jak to
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