[개정판] 파이썬 라이브러리를 활용한 머신러닝

 

x9791162241646

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

사이킷런의 최신 버전에 맞추어 저자들이 새롭게 릴리스한 4판을 기준으로 개정판이 출간되었습니다. 주요한 변경 사항은 다음과 같습니다.

  • OneHotEncoder와 ColumnTransformer, make_column_transformer
  • KBinsDiscretizer
  • cross_validate
  • Pipeline 캐싱
  • 그외 사이킷런 0.19, 0.20에서 추가, 변경된 내용 반영
  • (한국어판 부록) 배깅, 엑스트라 트리, 에이다부스트
  • (한국어판 부록) QuantileTransformer와 PowerTransformer
  • (한국어판 부록) 반복 교차 검증

특별히 개정판에서는 그래프를 손쉽게 구분할 수 있도록 풀 컬러 인쇄를 하였습니다! 흔쾌히 컬러 인쇄를 결정해 주신 한빛미디어 출판사에 감사드립니다.

  • 온라인/오프라인 서점에서 판매중입니다. [YES24], [교보문고], [한빛미디어]
  • 480 페이지, 종이책: 32,000원—>28,800원, 전자책 25,600원
  • 이 책에 실린 코드는 깃허브에서 주피터 노트북으로 볼 수 있습니다. [github], [nbviewer]
  • 이 책의 코드는 scikit-learn 0.20.2, 0.21.1 버전에서 테스트 되었습니다.
  • 저자 안드레아스 뮐러와의 인터뷰는 한빛미디어 홈페이지에서 볼 수 있습니다.
  • 1판의 1장과 2장을 ‘파이썬 머신러닝‘ 페이지에서 읽을 수 있습니다.
  • 교보문고 Dev READIT 2018에 선택되어 이 책에 대한 칼럼을 썼습니다.

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

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

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

감사합니다! 🙂


Outputs (aka. errata)

  • 1~29: 2쇄에 반영되었습니다.

 

  1. (p104) 그림 2-24와 2-25가 잘못 되었습니다. 다음 그림으로 바꾸어야 합니다.(현*웅 님)
    2-24

    그림 2-24

    2-25

    그림 2-25

  2. (p124) 아래에서 두 번째 줄의 주석 번호를 48에서 51로 바꿉니다.(현*웅 님)
  3. (p36) Note 박스의 첫 번째 줄 끝에서 ‘ 라이브러리’를 ‘다섯 라이브러리’로 정정합니다.(현*웅 님)
  4. (p156) 마지막 줄 끝의 주석 번호를 64에서 68로 바꿉니다.(현*웅 님)
  5. (p161) NOTE 박스 끝의 주석 번호를 78에서 79로 바꿉니다.(현*웅 님)
  6. (p345) CAUTION 박스 끝의 주석 번호를 11에서 12로 바꿉니다.(현*웅 님)
  7. (p375) 마지막 줄의 주석 번호를 33에서 34로 바꿉니다.(현*웅 님)
  8. (p425) 페이지 중간에 있는 주석 번호를 12에서 14로 바꿉니다.(현*웅 님)
  9. (p447) 마지막 줄에 “컴퓨터에 장착된 CPU 코어를 최대한 활용하기 위해 n_jobs=-1로 지정했습니다”를 “Mecab은 Pickle 오류가 발생하기 때문에 n_jobs=1로 지정했습니다”로 정정합니다.(현*웅 님)
  10. (p108) 주석 40에서 “graphviz 모듈은 pip install graphviz 명령으로”를 “graphviz 모듈은 conda install graphviz 또는 pip install graphviz 명령으로”로 수정합니다.(현*웅 님)
  11. (p281) Out [12]의 출력을 다음과 같이 변경합니다.
    [[1. 0. 0. 0. 1. 0.]
    [0. 1. 0. 0. 0. 1.]
    [0. 0. 1. 0. 1. 0.]
    [0. 1. 0. 1. 0. 0.]]
  12. (p71) 주석 6번의 R^2 공식에서 두 번째 항의 분자가 \sum (y-y)^2이 아니고 \sum (y-\hat{y})^2입니다.(서* 님)
  13. (p86) 주석 20번의 두 번째 줄에서 “로스틱 회귀”를 “로스틱”로 정정합니다.(서* 님)
  14. (p103~104) 103 페이지 마지막 문단과 104 페이지 첫 문단에서 0.05960.06으로 정정합니다.(서* 님)
  15. (p157) In[104]의 두 번째 print 함수에서 “훈련 세트 정확도”를 “테스트 세트 정확도”로 정정합니다.(서* 님)
  16. (p291) 첫 번째 줄에서 “학습된 기울기는 음수이고”를 “학습된 기울기는 양수이고”로 정정합니다.(서* 님)
  17. (p295) 마지막 줄에서 “아무런 변환도 거치 않은”을 “아무런 변환도 거치 않은”으로 정정합니다.(서* 님)
  18. (p303) 주석 24번에서 “정보 누설에 대한 자세한 내용은 376쪽”을 “정보 누설에 대한 자세한 내용은 398쪽”으로 정정합니다.(서* 님)
  19. (p123) Out[75]의 두 번째 줄에서 “훈련 세트 정확도”를 “테스트 세트 정확도”로 정정합니다.
  20. (p328) 주석 3번에서 “cross_val_predct(logreg, iris.data, iris.target, cv=5)”를 “cross_val_predict(logreg, iris.data, iris.target, cv=5)”로 정정합니다.(서* 님)
  21. (p344) 페이지 중간에 “In[22] 코드의 결과와 대등합니다”를 “In[24] 코드의 결과와 대등합니다”로 정정합니다.(서* 님)
  22. (p368) 맨 위 세 번째 줄에서 “f_1-점수가 0.14이지만, … ‘9아님’ 클래스는 각각 0.90과 0.99라서”를 “f_1-점수가 0.12이지만, … ‘9아님’ 클래스는 각각 0.89과 0.99라서”로 정정합니다.(서* 님)
  23. (p371) 첫 번째 문단 마지막에 제시된 “https://goo.gl/RaDS8Z“를 “https://bit.ly/2IfMILV“로 바꿉니다.(서* 님)
  24. (p387) In[75]와 In[76] 코드에서 “roc_auc_score(y_test, grid.decision_function(X_test))”를 “average_precision_score(y_test, grid.decision_function(X_test))”로 정정합니다. In[76] 코드에서 GridSearchCV의 scoring 매개변수 값을 “roc_auc”에서 “average_precision“으로 정정합니다. 또한 Out[76]에서 “테스트 세트 AUC: 1.000“을 “테스트 세트 평균 정밀도: 0.996“으로, “테스트 세트 정확도: 1.000“을 “테스트 세트 정확도: 0.890“으로 정정합니다.(서* 님)
  25. (p397, p399) 397페이지 첫 번째 문단과 399페이지 주석 7번에서 “검증 폴더“를 “검증 폴드“로 정정합니다.(서* 님)
  26. (p427) 주석 15번에서 “Out[22]의 출력 결과가”를 “Out[23]의 출력 결과가”로 정정합니다.(서* 님)
  27. (p444) 첫 번째 문단 마지막 부분에서 “keep_default_na=True로 지정하여”를 “keep_default_na=False로 지정하여”로 정정합니다.(서* 님)
  28. (p441) In[45] 코드를 다음과 같이 수정합니다.
    # 요구사항: spacy에서 표제어 추출 기능과 CountVectorizer의 토큰 분할기를 사용합니다.
    
    # spacy의 언어 모델을 로드합니다
    en_nlp = spacy.load('en', disable=['parser', 'ner'])
    
    # spacy 문서 처리 파이프라인을 사용해 자작 토큰 분할기를 만듭니다
    # (우리만의 토큰 분할기를 사용합니다)
    def custom_tokenizer(document):
        doc_spacy = en_nlp(document)
        return [token.lemma_ for token in doc_spacy]
    
    # 자작 토큰 분할기를 사용해 CountVectorizer 객체를 만듭니다
    lemma_vect = CountVectorizer(tokenizer=custom_tokenizer, min_df=5)
  29. (p366, 367, 369, 370, 384) 사이킷런 0.21 버전에서 classification_report 함수의 labels 매개변수가 지정되지 않거나 labels 매개변수로 전달된 클래스 레이블이 타깃값에 모두 포함되어 있다면 micro avg 대신에 같은 의미인 accuracy가 출력됩니다. 따라서 classification_report 함수 출력에서 “micro avg    aa, bb, cc, dd“를 “accuracy    cc, dd“로 바꾸어 주세요.
  30. (p30) scipy.misc.imread 함수가 scipy 1.3.0 버전에서 삭제되었습니다. 대신 imageio.imread 함수를 사용하기 위해 imageio를 설치해야 합니다. pip 명령 맨 뒤에 imageio를 추가해 주세요.
    $ pip install numpy scipy matplotlib ipython scikit-learn pandas pillow imageio

 


Your Inputs

답글 남기기

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

WordPress.com 로고

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

Google photo

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

Twitter 사진

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

Facebook 사진

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

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.