Are Pandas, Statsmodels and scikits-learn different implementations of machine learning/statistical operations, or are these complementary to one another?
Which of these has the most comprehensive functionality?
Which one is actively developed and/or supported?
I have to implement logistic regression. Any suggestions as to which of these I should use?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
I would like to qualify and clarify a bit the accepted answer.
The three packages are complementary to each other since they cover different areas, have different main objectives, or emphasize different areas in machine learning/statistics.
statsmodels has pandas as a dependency, pandas optionally uses statsmodels for some statistics. statsmodels is using
There is some overlap in models between scikit-learn and statsmodels, but with different objectives. see for example The Two Cultures: statistics vs. machine learning?
some more about statsmodels
statsmodels has the lowest developement activity and longest release cycle of the three. statsmodels has many contributors but unfortunately still only two "maintainers" (I'm one of them.)
The core of statsmodels is "production ready": linear models, robust linear models, generalised linear models and discrete models have been around for several years and are verified against Stata and R. statsmodels also has a time series analysis part covering AR, ARMA and VAR (vector autoregressive) regression, which are not available in any other python package.
Some examples to show some specific differences between the machine learning approach in scikit-learn and the statistics and econometrics approach in statsmodels:
Simple linear Regression,
Logistic Regression can be done in statsmodels either as