Saya ingin memenuhi syarat dan mengklarifikasi sedikit jawaban yang diterima.
Tiga paket saling melengkapi karena mereka mencakup bidang yang berbeda, memiliki tujuan utama yang berbeda, atau menekankan bidang yang berbeda dalam pembelajaran mesin / statistik.
- panda terutama merupakan paket untuk menangani dan beroperasi secara langsung pada data.
- scikit-belajar adalah melakukan pembelajaran mesin dengan penekanan pada pemodelan prediktif dengan data yang sering besar dan jarang
- statsmodels melakukan statistik dan ekonometrik "tradisional", dengan penekanan yang lebih kuat pada estimasi parameter dan pengujian (statistik).
statsmodel memiliki panda sebagai dependensi, panda secara opsional menggunakan statsmodel untuk beberapa statistik. statsmodels digunakan patsy
untuk menyediakan antarmuka rumus yang mirip dengan model sebagai R.
Ada beberapa model yang tumpang tindih antara scikit-learn dan statsmodels, tetapi dengan tujuan yang berbeda. lihat misalnya Dua Budaya: statistik vs. pembelajaran mesin?
lagi tentang statsmodels
statsmodels memiliki aktivitas pengembangan terendah dan siklus rilis terpanjang dari ketiganya. statsmodels memiliki banyak kontributor tetapi sayangnya hanya dua "pengelola" (saya salah satunya.)
Inti dari statsmodels adalah "siap produksi": model linier, model linier kuat, model linier umum dan model diskrit telah ada selama beberapa tahun dan diverifikasi terhadap Stata dan R. statsmodels juga memiliki bagian analisis deret waktu yang mencakup AR, ARMA dan Regresi VAR (vector autoregressive), yang tidak tersedia dalam paket python lainnya.
Beberapa contoh untuk menunjukkan beberapa perbedaan spesifik antara pendekatan pembelajaran mesin dalam scikit-belajar dan pendekatan statistik dan ekonometrik dalam statsmodels:
Regresi linier sederhana OLS
,, memiliki sejumlah besar analisis pasca estimasi dengan
http://statsmodels.sourceforge.net/devel/generated/statsmodels.regress.linear_model.OLSResults.html termasuk tes pada parameter, tindakan outlier dan tes spesifikasi http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
Regresi Logistik dapat dilakukan dalam statsmodels baik sebagai Logit
model dalam diskrit atau sebagai keluarga dalam model linier umum ( GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
termasuk keluarga biasa, model diskrit berisi selain Logit
juga Probit
, multinomial dan regresi jumlah.
Logit
Penggunaannya Logit
sesederhana http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.html ini
>>> 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