Ich möchte die akzeptierte Antwort ein wenig näher erläutern.
Die drei Pakete ergänzen sich gegenseitig, da sie unterschiedliche Bereiche abdecken, unterschiedliche Hauptziele verfolgen oder unterschiedliche Bereiche des maschinellen Lernens / der Statistik hervorheben.
- pandas ist hauptsächlich ein Paket, um Daten direkt zu verarbeiten und zu verarbeiten.
- scikit-learn macht maschinelles Lernen mit Schwerpunkt auf prädiktiver Modellierung mit oft großen und spärlichen Daten
- statsmodels betreibt "traditionelle" Statistik und Ökonometrie, wobei der Schwerpunkt auf Parameterschätzung und (statistischen) Tests liegt.
statsmodels hat pandas als abhängigkeit, pandas verwendet für einige statistiken optional statsmodels. statsmodels verwendet patsy
, um eine ähnliche Formelschnittstelle für die Modelle wie R bereitzustellen.
In den Modellen gibt es einige Überschneidungen zwischen Scikit-Learn- und Statistikmodellen, jedoch mit unterschiedlichen Zielen. siehe zum Beispiel Die zwei Kulturen: Statistik vs. maschinelles Lernen?
mehr über statsmodels
statsmodels hat die niedrigste Entwicklungsaktivität und den längsten Veröffentlichungszyklus der drei. statsmodels hat viele Mitwirkende, aber leider immer noch nur zwei "Betreuer" (ich bin einer von ihnen.)
Der Kern von Statistikmodellen ist "produktionsbereit": Lineare Modelle, robuste lineare Modelle, verallgemeinerte lineare Modelle und diskrete Modelle gibt es seit mehreren Jahren und sie werden mit Stata verifiziert. R. Statistikmodelle umfassen auch einen Teil zur Zeitreihenanalyse, der AR, ARMA und VAR-Regression (Vector Autoregressive), die in keinem anderen Python-Paket verfügbar ist.
Einige Beispiele, um einige spezifische Unterschiede zwischen dem Ansatz des maschinellen Lernens beim Scikit-Lernen und dem Ansatz der Statistik und Ökonometrie bei Statistikmodellen aufzuzeigen:
Einfache lineare Regression, OLS
hat eine große Anzahl von Post-Schätzungsanalyse
http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html einschließlich Tests auf Parameter, Ausreißer Maßnahmen und Spezifikationstests http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
Die logistische Regression kann in Statistikmodellen entweder als Logit
Modell in diskreten oder als Familie in verallgemeinerten linearen Modellen ( GLM
) durchgeführt werden. http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
Umfasst die üblichen Familien, diskrete Modelle enthält zudem Logit
auch Probit
Multinomial- und Count-Regression.
Logit
Die Verwendung Logit
ist so einfach wie diese
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