-
Pandas, Statsmodels 및 Scikit-learn은 기계 학습 / 통계 작업의 다른 구현입니까? 아니면 서로 보완 적인가?
-
다음 중 가장 포괄적 인 기능이있는 것은 무엇입니까?
-
어느 것이 적극적으로 개발 및 / 또는 지원됩니까?
-
로지스틱 회귀를 구현해야합니다. 이 중 어떤 것을 사용해야하는지에 대한 제안이 있습니까?
답변
-
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)
답변
승인 된 답변의 자격을 얻고 명확하게하고 싶습니다.
세 가지 패키지는 서로 다른 영역을 다루거나 주요 목표가 다르거 나 기계 학습 / 통계에서 서로 다른 영역을 강조하기 때문에 서로 보완 적입니다.
- 팬더는 주로 데이터를 직접 처리하고 처리하는 패키지입니다.
- scikit-learn은 종종 크고 작은 데이터로 예측 모델링에 중점을 둔 머신 러닝
- statsmodels는 “전통적인”통계 및 계량 경제학을 수행하고 있으며 매개 변수 추정 및 (통계) 테스트에 훨씬 중점을두고 있습니다.
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