팬더 / Statsmodel / Scikit-learn


41
  1. Pandas, Statsmodels 및 Scikit-learn은 기계 학습 / 통계 작업의 다른 구현입니까? 아니면 서로 보완 적인가?

  2. 다음 중 가장 포괄적 인 기능이있는 것은 무엇입니까?

  3. 어느 것이 적극적으로 개발 및 / 또는 지원됩니까?

  4. 로지스틱 회귀를 구현해야합니다. 이 중 어떤 것을 사용해야하는지에 대한 제안이 있습니까?

답변:


33
  1. Scikit-learn (sklearn)은 나열된 세 가지 중에서 기계 학습에 가장 적합한 선택입니다. Pandas와 Statsmodel에는 예측 학습 알고리즘이 포함되어 있지만 아직 생산 준비가되어 있지 않거나 숨겨져 있습니다. 종종 저자가 다른 프로젝트를 수행 할 때 도서관은 무료입니다. 예를 들어, 최근 Pandas의 데이터 프레임이 Statsmodels에 통합되었습니다. sklearn과 Pandas의 관계는 아직 없습니다 (아직).

  2. 기능을 정의하십시오. 그들은 모두 달립니다. 가장 유용한 것을 의미하는 경우 응용 프로그램에 따라 다릅니다. 파이썬 (데이터 프레임)에 훌륭한 새로운 데이터 구조가 추가되었으므로 Pandas에 +1을 제공 할 것입니다. 팬더는 아마도 최고의 API를 가지고있을 것입니다.

  3. Pandas가 최고의 코드 기반을 가지고 있다고 말하지만 모두 적극적으로 지원됩니다. Sklearn과 Pandas는 Statsmodels보다 더 활동적입니다.

  4. 분명한 선택은 Sklearn입니다. 수행 방법이 쉽고 명확합니다.

    from sklearn.linear_models import LogisticRegression as LR
    logr = LR()
    logr.fit( X, Y )
    results = logr.predict( test_data)
    

5
아래에서 더 긴 설명을 읽으십시오!
dartdog

4
이 답변은 Pandas가 주로 데이터 조작 (예 : 인덱싱, 선택, 집계)을위한 반면 다른 두 모델은 모델을 구축하기위한 것 (예 : 예측 또는 추론)을 설명하지 않습니다.
나단 굴드

나는 1 년 이상 sklearn을 사용해 왔으며 훌륭해졌습니다. 이제 프로젝트가 커지면서 Pandas의 우수한 데이터 구조를 사용해야 할 필요성을 느끼므로 장기적으로 보완 적이라고 생각합니다.
dashesy

아마도 이것은 최근에 변경되었지만 import 문에서는 linear_model(단일) 이어야하며 linear_models.
Vishal

75

승인 된 답변의 자격을 얻고 명확하게하고 싶습니다.

세 가지 패키지는 서로 다른 영역을 다루거나 주요 목표가 다르거 나 기계 학습 / 통계에서 서로 다른 영역을 강조하기 때문에 서로 보완 적입니다.

  • 팬더는 주로 데이터를 직접 처리하고 처리하는 패키지입니다.
  • scikit-learn은 종종 크고 작은 데이터로 예측 모델링에 중점을 둔 머신 러닝
  • statsmodels는 "전통적인"통계 및 계량 경제학을 수행하고 있으며 매개 변수 추정 및 (통계) 테스트에 훨씬 중점을두고 있습니다.

statsmodels는 팬더를 종속성으로 가지고 있으며, pandas는 선택적으로 일부 통계에 statsmodels를 사용합니다. statsmodels는 patsyR과 모델에 유사한 수식 인터페이스를 제공하기 위해 사용 합니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.