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

 

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원
  • 이 책에 실린 코드는 깃허브에서 주피터 노트북으로 볼 수 있습니다. [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. (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_predct(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“로 바꾸어 주세요.

 


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.