Tôi muốn đủ điều kiện và làm rõ một chút câu trả lời được chấp nhận.
Ba gói này bổ sung cho nhau vì chúng bao gồm các lĩnh vực khác nhau, có các mục tiêu chính khác nhau hoặc nhấn mạnh các lĩnh vực khác nhau trong học máy / thống kê.
- gấu trúc chủ yếu là một gói để xử lý và vận hành trực tiếp trên dữ liệu.
- scikit-learn đang thực hiện học máy với sự nhấn mạnh vào mô hình dự đoán với dữ liệu thường lớn và thưa thớt
- statsmodels đang thực hiện thống kê và kinh tế lượng "truyền thống", với sự nhấn mạnh hơn nhiều vào ước tính tham số và kiểm tra (thống kê).
statsmodels có gấu trúc như một sự phụ thuộc, gấu trúc tùy ý sử dụng số liệu thống kê cho một số thống kê. statsmodels đang sử dụng patsy
để cung cấp giao diện công thức tương tự cho các mô hình như R.
Có một số sự chồng chéo trong các mô hình giữa scikit-learn và statsmodels, nhưng với các mục tiêu khác nhau. xem ví dụ Hai nền văn hóa: thống kê so với học máy?
thêm một số thông tin về thống kê
statsmodels có hoạt động phát triển thấp nhất và chu kỳ phát hành dài nhất trong ba. statsmodels có nhiều người đóng góp nhưng tiếc là vẫn chỉ có hai "người bảo trì" (tôi là một trong số họ.)
Cốt lõi của statsmodels là "sẵn sàng sản xuất": mô hình tuyến tính, mô hình tuyến tính mạnh mẽ, mô hình tuyến tính tổng quát và mô hình rời rạc đã tồn tại vài năm và được xác minh chống lại Stata và R. statsmodels cũng có phần phân tích chuỗi thời gian bao gồm AR, ARMA và Hồi quy VAR (vector autoreTHERive), không có sẵn trong bất kỳ gói python nào khác.
Một số ví dụ để chỉ ra một số khác biệt cụ thể giữa phương pháp học máy trong scikit-learn và phương pháp thống kê và kinh tế lượng trong thống kê mô hình:
Hồi quy tuyến tính đơn giản OLS
, có số lượng lớn phân tích sau ước lượng
http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html bao gồm các thử nghiệm về tham số, các biện pháp ngoại lệ và kiểm tra thông số kỹ thuật http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
Hồi quy logistic có thể được thực hiện trong các Logit
mô hình thống kê hoặc là mô hình rời rạc hoặc như một gia đình trong mô hình tuyến tính tổng quát ( GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
bao gồm các gia đình thông thường, các mô hình rời rạc Logit
cũng có bên cạnh đó Probit
, hồi quy đa biến và đếm.
Đăng nhập
Việc sử dụng Logit
rất đơn giản như
http://statsmodels.sourceforge.net/devel/examples/generated/example_discittle.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