답변:
Scikit-learn (sklearn)은 나열된 세 가지 중에서 기계 학습에 가장 적합한 선택입니다. Pandas와 Statsmodel에는 예측 학습 알고리즘이 포함되어 있지만 아직 생산 준비가되어 있지 않거나 숨겨져 있습니다. 종종 저자가 다른 프로젝트를 수행 할 때 도서관은 무료입니다. 예를 들어, 최근 Pandas의 데이터 프레임이 Statsmodels에 통합되었습니다. sklearn과 Pandas의 관계는 아직 없습니다 (아직).
기능을 정의하십시오. 그들은 모두 달립니다. 가장 유용한 것을 의미하는 경우 응용 프로그램에 따라 다릅니다. 파이썬 (데이터 프레임)에 훌륭한 새로운 데이터 구조가 추가되었으므로 Pandas에 +1을 제공 할 것입니다. 팬더는 아마도 최고의 API를 가지고있을 것입니다.
Pandas가 최고의 코드 기반을 가지고 있다고 말하지만 모두 적극적으로 지원됩니다. Sklearn과 Pandas는 Statsmodels보다 더 활동적입니다.
분명한 선택은 Sklearn입니다. 수행 방법이 쉽고 명확합니다.
from sklearn.linear_models import LogisticRegression as LR
logr = LR()
logr.fit( X, Y )
results = logr.predict( test_data)
linear_model
(단일) 이어야하며 linear_models
.
승인 된 답변의 자격을 얻고 명확하게하고 싶습니다.
세 가지 패키지는 서로 다른 영역을 다루거나 주요 목표가 다르거 나 기계 학습 / 통계에서 서로 다른 영역을 강조하기 때문에 서로 보완 적입니다.
statsmodels는 팬더를 종속성으로 가지고 있으며, pandas는 선택적으로 일부 통계에 statsmodels를 사용합니다. statsmodels는 patsy
R과 모델에 유사한 수식 인터페이스를 제공하기 위해 사용 합니다.
scikit-learn과 statsmodel 간에는 모델이 겹치지 만 목표는 다릅니다. 예를 들어 두 문화 : 통계 대 기계 학습?
statsmodels에 대한 추가 정보
statsmodels는 가장 낮은 개발 활동과 가장 긴 릴리스주기를 갖습니다. statsmodels에는 많은 기고자가 있지만 불행히도 여전히 두 개의 "유지 관리자"만 있습니다 (저는 그들 중 하나입니다).
통계 모델의 핵심은 "생산 준비"입니다. 선형 모델, 강력한 선형 모델, 일반화 된 선형 모델 및 이산 모델은 몇 년 동안 사용되어 왔으며 Stata 및 R에 대해 검증되었습니다. 통계 모델에는 AR, ARMA 및 다른 파이썬 패키지에서는 사용할 수없는 VAR (벡터 자동 회귀) 회귀
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
로지스틱 회귀 분석은 통계 Logit
모델에서 불연속 모델 또는 일반 선형 모형 ( GLM
) 의 패밀리 로 수행 할 수 있습니다 . http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
개별 모델 외에 포함, 보통의 가족을 포함 Logit
또한 Probit
다항 및 회귀를 계산합니다.
로짓
http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.htmlLogit
처럼 사용 이 간단합니다
.
>>> 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