Я хотел бы уточнить и немного уточнить принятый ответ.
Эти три пакета дополняют друг друга, поскольку охватывают разные области, преследуют разные основные цели или подчеркивают разные области машинного обучения / статистики.
- Pandas - это, главным образом, пакет для обработки и работы непосредственно с данными.
- scikit-learn делает машинное обучение с упором на прогнозное моделирование с часто большими и редкими данными
- statsmodels занимается «традиционной» статистикой и эконометрикой, уделяя гораздо больше внимания оценке параметров и (статистическому) тестированию.
У statsmodels есть панды в качестве зависимости, панды по выбору используют statsmodels для некоторой статистики. statsmodels использует, patsy
чтобы обеспечить интерфейс с аналогичной формулой, что и R.
В моделях между scikit-learn и statsmodels существует некоторое совпадение, но с разными целями. посмотрите, например, Две культуры: статистика против машинного обучения?
еще немного о statsmodels
statsmodels имеет самую низкую активность в разработке и самый длинный цикл выпуска из трех. У statsmodels есть много участников, но, к сожалению, только два «сопровождающих» (я один из них.)
Ядро statsmodels «готово к производству»: линейные модели, надежные линейные модели, обобщенные линейные модели и дискретные модели существуют уже несколько лет и проверены на соответствие Stata и R. statsmodels также имеет часть анализа временных рядов, охватывающую AR, ARMA и VAR (векторная авторегрессия) регрессия, недоступная ни в одном другом пакете Python.
Некоторые примеры, демонстрирующие некоторые специфические различия между подходом машинного обучения в scikit-learn и подходом статистики и эконометрики в statsmodels:
Простые линейная регрессия, OLS
имеет большое количество анализа после оценки
http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html , включая тесты на параметрах, меры и резко отклоняющихся значения спецификации тесты HTTP: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
Логистическая регрессия может быть выполнена в statsmodels либо как Logit
модель в дискретной, либо как семейство в обобщенной линейной модели ( GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
включает в себя обычные семьи, отдельные модели содержат кроме того Logit
также Probit
, мультиномиальная и сосчитать регрессии.
Logit
Использовать Logit
так же просто, как этот
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