Я хотів би кваліфікувати та трохи уточнити прийняту відповідь.
Три пакети є взаємодоповнюючими один одного, оскільки охоплюють різні сфери, мають різні основні цілі або наголошують на різних областях машинного навчання / статистики.
- панди - це в основному пакет для обробки та керування безпосередньо над даними.
- scikit-learn - це машинне навчання з акцентом на прогностичному моделюванні з часто великими і розрідженими даними
- statsmodels займається "традиційною" статистикою та економетрикою, при цьому значно сильніше акцентується на оцінці параметрів та (статистичному) тестуванні.
statsmodels має панди як залежність, pandas необов'язково використовує статистичні моделі для деяких статистичних даних. statsmodels використовує patsy
для надання аналогічного інтерфейсу формули для моделей, як Р.
Існує деяке перекриття в моделях між науками і навчальними моделями, але з різними цілями. див. для прикладу Дві культури: статистика проти машинного навчання?
ще кілька про статистичні моделі
statsmodels має найнижчу активність розробки та найдовший цикл випуску з цих трьох. statsmodels має багато учасників, але, на жаль, досі лише два "обслуговуючі" (я один з них.)
Основою статистичних моделей є «готові до виробництва»: лінійні моделі, надійні лінійні моделі, узагальнені лінійні моделі та дискретні моделі існують вже декілька років, і вони перевірені щодо Stata та R. Statsmodels також має частину аналізу часових рядів, що охоплює AR, ARMA та VAR (вектор авторегресивної) регресії, які відсутні в будь-якому іншому пакеті python.
Деякі приклади, які показують деякі специфічні відмінності між підходом до машинного навчання у науковому навчанні та підходом статистики та економетрики в статистичних моделях:
Проста лінійна регресія, 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
Логістична регресія може бути виконана в статистичних моделях або як Logit
дискретна модель, або як сімейство в узагальненій лінійній моделі ( GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
включає в себе звичайні сім'ї, дискретні моделі містить , окрім Logit
також Probit
, поліноміальний і порахувати регресії.
Логіт
Використовувати так 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