파이썬 라이브러리를 활용한 머신러닝

b6119391002_l

‘파이썬 라이브러리를 활용한 머신러닝’은 scikit-learn의 코어 개발자이자 배포 관리자인 안드레아스 뮐러Andreas Mueller와 매쉬어블의 데이터 과학자인 세라 가이도Sarah Guido가 쓴 ‘Introduction to Machine Learning with Python‘의 번역서입니다.

  • 온라인/오프라인 서점에서 판매중입니다. [YES24], [교보문고], [알라딘], [그외]
  • 이 책에 실린 코드는 깃허브에서 주피터 노트북으로 볼 수 있습니다. [github], [nbviewer]
  • 이 책의 코드는 scikit-learn 0.18.1, 0.19 버전에서 테스트 되었습니다.
  • 저자 안드레아스 뮐러와의 인터뷰는 한빛미디어 홈페이지에서 볼 수 있습니다.
  • 이 책의 1장과 2장을 ‘파이썬 머신러닝‘ 페이지에서 읽을 수 있습니다.

이 페이지에서 책의 에러타와 scikit-learn 버전 변경에 따른 바뀐 점들을 계속 업데이트 하겠습니다. 구글 그룹스 파이썬 머신러닝 메일링 리스트에 가입하시면 책의 에러타나 수정사항을 자동으로 수신할 수 있습니다.

이 책에 대해 궁금한 점이나 오류가 있으면 이 페이지 맨 아래 ‘Your Inputs’에 자유롭게 글을 써 주세요. 또 제 이메일을 통해서 알려 주셔도 되고 구글 그룹스 파이썬 머신러닝 Q&A에 글을 올려 주셔도 좋습니다.

적바림(미처 책에 넣지 못한 내용을 추가하고 있습니다)

감사합니다! 🙂


Outputs (aka. errata)

  1. scikit-learn 0.19 버전으로 인해 변경된 사항
    • p209: TSNE 버그 수정으로 그림 3-22가 변경되었습니다(좌: 변경전, 우: 변경후). 클래스 구분히 훨씬 잘 되는 것을 확인할 수 있습니다.
    • p213: KMeans의 클러스터 레이블 할당이 무작위이기 때문에 Out[52], Out[53]과 그 이후 이미지의 클러스터 레이블이 바뀔 수 있습니다.
    • p220, p221: KMeans 버그 수정으로 인해 그림 3-30의 클러스터 중심과 그림 3-31의 재구성 이미지가 달라졌습니다(좌: 변경전, 우: 변경후).
    • p242: DBSCAN 버그 수정으로 인해 In[79]의 클러스터 크기가 조금 달라졌습니다.
      eps=9일 때 [1308 749 3 3] 에서 [1307 750 3 3] 로,
      eps=11일 때 [ 415 1648] 에서 [ 413 1650] 로 바뀝니다.
    • p245: KMeans 버그 수정으로 인해 Out[81]의 클러스터 크기가 [133 353 232 144 185 136 292 249 211 128] 에서 [155 175 238 75 358 257 91 219 323 172] 로 달라졌습니다.
    • p246, p247: KMeans 버그 수정으로 인해 그림 3-43, 그림 3-44의 이미지가 달라졌습니다(좌: 변경전, 우: 변경후). 클러스터 중심에서 가깝고 먼 이미지가 보다 잘 구분되는 것을 확인할 수 있습니다.
    • p248: Out[85]의 ARI 점수가 0.07에서 0.09로 달라졌습니다.
    • p314: Out[16]의 교차 검증 점수가 [ 0.933 0.96 0.92 0.96 0.947 0.907 0.88 0.933 0.92 0.933] 에서 [ 0.867 0.907 0.973 0.973 0.893 0.96 0.987 0.893 0.933 0.973] 로 바뀌었습니다.
    • p325: Out[31]에서 “decision_function_shape=None” –> “decision_function_shape=’ovr'” 로 변경되었습니다.
    • p340: Out[44]의 dummy 점수가 0.80으로 바뀌었습니다.
      “하지만 더미 분류기조차도 77%를 맞혔습니다” –> “하지만 더미 분류기조차도 80%를 맞혔습니다” 로 수정합니다.
    • p342: Out[48]에서 무작위 더미 모델의 오차 행렬이 [[360 43] [43 4]] 에서 [[360 43] [40 7]] 로 바뀌었습니다.
    • p345: Out[49]에서 무작위 더미 모델의 f1 score가 0.14로 변경되었습니다.
    • p346: Out[51]에서 ‘9 아님’의 precision, f1-score이 0.90으로, ‘9’의 precision, f1-score가 0.14로, ‘avg / total’은 모두 0.82로 변경되었습니다.
    • p347: Out[52] 아래 문단에서 “‘9’ 클래스의 f_1-점수가 0.10이지만 (로지스틱 회귀는 0.89), ‘9 아님’ 클래스는 각각 0.91과 0.99라서 양쪽 모두 수긍할 만한 결과입니다.” –> “‘9’ 클래스의 f_1-점수가 0.14이지만 (로지스틱 회귀는 0.89), ‘9 아님’ 클래스는 각각 0.90과 0.99라서 양쪽 모두 수긍할 만한 결과입니다.” 로 변경합니다.
    • p355: Out[62]에서 랜덤 포레스트와 svc의 평균 정밀도가 각각 0.660, 0.666으로 변경되었습니다. 바로 아래 문장에서 “랜덤 포레스트가 조금 낫지만, SVC와 거의 같은 성능입니다” –> “랜덤 포레스트가 조금 지만, SVC와 거의 같은 성능입니다” 로 변경합니다.
    • p366: Out[74]의 가능한 평가 방식이 다음과 같이 많이 늘어 났습니다.
      [‘accuracy’, ‘adjusted_mutual_info_score’, ‘adjusted_rand_score’, ‘average_precision’, ‘completeness_score’, ‘explained_variance’, ‘f1’, ‘f1_macro’, ‘f1_micro’, ‘f1_samples’, ‘f1_weighted’, ‘fowlkes_mallows_score’, ‘homogeneity_score’, ‘log_loss’, ‘mean_absolute_error’, ‘mean_squared_error’, ‘median_absolute_error’, ‘mutual_info_score’, ‘neg_log_loss’, ‘neg_mean_absolute_error’, ‘neg_mean_squared_error’, ‘neg_mean_squared_log_error’, ‘neg_median_absolute_error’, ‘normalized_mutual_info_score’, ‘precision’, ‘precision_macro’, ‘precision_micro’, ‘precision_samples’, ‘precision_weighted’, ‘r2’, ‘recall’, ‘recall_macro’, ‘recall_micro’, ‘recall_samples’, ‘recall_weighted’, ‘roc_auc’, ‘v_measure_score’]
    • p380: Out[20]에서 “decision_function_shape=None” –> “decision_function_shape=’ovr'” 로 변경되었습니다.
    • p382: Out[26]에서 Pipeline 캐싱 옵션인 memory 매개변수가 추가되었습니다.
      “Pipeline(step=[(‘standardscaler’…” –> “Pipeline(memory=None, steps=[(‘standardscaler’…”
    • p405: Out[22]의 불용어 리스트의 순서에 따라 출력 결과가 달라질 수 있습니다.
    • p427, p428: In[48], In[52]의 LatentDirichletAllocation의 n_topics 매개변수가 0.19버전에서 n_components로 바뀌었습니다.
  2. (p315) 첫 문장 “GroupKFold를 사용할 수 있습니다.” 끝에 주석 “옮긴이_ cross_val_score 함수로 넘겨진 groups 매개변수는 함수 내부에서 cv.splits() 메소드를 호출할 때 groups를 매개변수로 전달합니다.”을 추가합니다.
  3. (p323) 마지막 문단의 중간에 “이 절의 서두에 있는 In[23] 코드의 결과와 대등합니다.”를 “이 절의 서두에 있는 In[22] 코드의 결과와 대등합니다.”로 고칩니다.
  4. (p333) “param_grid의 매개변수 조합은 42개입니다. 이때 만들어지는 모델은 총 42 x 5 x 5 = 1,050개나 되므로..” 를 “param_grid의 매개변수 조합은 36개입니다. 이때 만들어지는 모델은 총 36 x 5 x 5 = 900개나 되므로..” 로 변경합니다. (원서의 2판에서 1판의 오류가 정정되었으므로 원서에 맞게 매개변수 조합을 36개로 고칩니다)
  5. (p343) 정확도의 공식에서 분모의 덧셈 항목 중 EP를 FP로 수정합니다.

Your Inputs

 

파이썬 라이브러리를 활용한 머신러닝”에 대한 6개의 생각

  1. Jaeyeon Baek

    이제 1장 예제들 따라가고 있는데, 어떤 이유인지 제 환경에서는 mglearn 을 인스톨 하고 진행해야 하더라고요. 1장 그림1-3 예제가 mglearn 이 있다는 가정에 진행되는 것인가요? (메시지 전송은 답글로 착각하고 전송했습니다)

    좋아하기

    응답
    1. 로드홈 글의 글쓴이

      네 맞습니다. 예제 노트북이 있는 폴더에서 주피터 노트북을 실행하시면 서브 디렉토리에 있는 mglearn을 그대로 임포트하실 수 있습니다. 안드레아스 뮐러가 pypi에 있는 mglearn에 깃허브 코드의 수정 사항을 모두 포함시켰는 지 잘 모르겠어요. ^^

      좋아하기

      응답
  2. 박형준

    1장 산점도 행렬 그림이 않그려지는건 어떤 이유로 않되는 걸까요?
    출력값이 이렇게 나오네요

    array([[,
    ,
    ,
    ],
    [,
    ,
    ,
    ],
    [,
    ,
    ,
    ],
    [,
    ,
    ,
    ]], dtype=object)

    좋아하기

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중