태그 보관물: machine-learning

machine-learning

팬더 / Statsmodel / Scikit-learn 학습 / 통계 작업의 다른 구현입니까? 아니면

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

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

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

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



답변

  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)
    

답변

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

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

  • 팬더는 주로 데이터를 직접 처리하고 처리하는 패키지입니다.
  • 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


답변