핸즈온 머신러닝 3판

The Return of the King!

전세계에서 가장 많이 팔린 머신러닝 도서! 독보적인 머신러닝 분야 베스트셀러! 핸즈온 머신러닝이 3판으로 돌아왔습니다!

3판은 최신 라이브러리로 코드를 모두 업데이트하고 생성 모델과 자연어 처리 분야에 등장한 최신 기술을 담았습니다. 특히 스테이블 디퓨전과 트랜스포머는 물론 허깅 페이스 라이브러리까지 소개합니다! 최신 케라스 API를 배울 수 있고 시퀀스 처리 부분에서는 교통 데이트를 활용한 실감나는 예제가 포함되어 있습니다. 2판과 3판의 차이점에 대해 더 자세한 내용은 Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition 번역 완료! 블로그 글을 참고하세요!

  • 지금 온라인/오프라인 서점에서 판매중입니다! [교보문고], [Yes24], [알라딘], [한빛미디어]
  • 1,028쪽, 풀컬러, 60,000원 –> 54,000원, 전자책: 48,000원
  • 3판은 천 페이지가 넘어 두 권(초풀합본)으로 나누어져 있습니다.
  • 이 책의 예제 코드는 깃허브에서 주피터 노트북으로 제공됩니다.

이 페이지에서 책의 에러타와 라이브러리 버전 변경에 따른 바뀐 점들을 ‘Outputs‘ 아래에 계속 업데이트 하겠습니다. 이 책에 대해 궁금한 점이나 오류가 있으면 이 페이지 맨 아래 ‘Your Inputs’에 자유롭게 글을 써 주세요. 또 제 이메일을 통해서 알려 주셔도 되고 구글 그룹스 머신러닝/딥러닝 도서 Q&A에 글을 올려 주셔도 좋습니다. 또 카카오톡 오픈 채팅(참여코드: flow)에 오셔서 문의해 주셔도 좋습니다.

감사합니다! 🙂


Outputs (aka. errata)

  1. (p97) 위에서 3번째 줄에서 “숫자형 특성이 11개 이므로 총 112 = 121개의 그래프가 되어”를 “숫자형 특성이 9개 이므로 총 92 = 81개의 그래프가 되어”로 정정합니다.
  2. (p230) 첫 번째 코드 블록 아래 1번째 줄에 “오른쪽 그래프가 이 코드로”를 “왼쪽 그래프가 이 코드로”로 수정합니다.
  3. (p644) 15.1.2절 아래 1번째 문장에서 “출력 시퀀스 만들 수 있습니다”를 “출력 시퀀스 만들 수 있습니다”로 정정합니다.
  4. (p976) 아래에서 5째줄에 b = tf.constant([[5, 6, 9, 11], [13, 0, 0, 0, 0]])를 b = tf.constant([[5, 6, 9, 11], [13, 0, 0, 0]])로 정정합니다.
  5. (p344) 두 번째 코드 블록 아래 첫 번째 줄에서 “83.3%에서 92.2%로 확 올라갔습니다”를 “74.8%에서 84.9%로 확 올라갔습니다”로 정정합니다.
  6. (p401) 위에서 3번째 줄에 “96%”를 “97%”로 정정합니다.
  7. (p462) 주석 32번 두 번째 줄에서 “[그림 11-6]”을 [그림 11-7]”로 정정합니다.
  8. (p676) 그림 15-12에서 tanh 함수의 출력으로 표시된 i_{(t)}g_{(t)}로 정정합니다. 네 개의 FC 층에 들어가는 입력으로 표시된 (t)x_{(t)}로 정정합니다.
  9. (p95) 첫 번째 코드 블록을 다음과 같이 수정합니다.(김*식 님)
    housing.plot(kind="scatter", x="longitude", y="latitude", grid=True,
                 s=housing["population"] / 100, label="population",
                 c="median_house_value", cmap="jet", colorbar=True,
                 legend=True, figsize=(10, 7))
    cax = plt.gcf().get_axes()[1]
    cax.set_ylabel('중간 주택 가격')
    plt.xlabel('경도')
    plt.ylabel('위도')
    plt.show()
  10. (p125) 페이지 중간 코드 블록에서 preprocessing.get_feature_names_out()의 출력을 다음과 같이 수정합니다.(김*식 님)
  11. (p128) 아래에서 7번째 줄에 “RMSE가 약 66.868이고”를 “평균 RMSE가 약 66,868이고”로 수정합니다. (p129) 아래에서 6번째 줄에 “약 17.474를 얻습니다”를 “약 17,474를 얻습니다”로 수정합니다.(김*식 님)
  12. (p134) 페이지 마지막 코드 블록의 출력에서 “geo__Cluster 0 similarity“를 “geo__클러스터 0 유사도“로 정정합니다.(김*식 님)
  13. (p95) 코드 블럭 위에서 2번째 줄에 label="population"을 `label=”인구”로 수정합니다.(김*식 님)
  14. (p103) 이해를 돕기 위해 TIP 바로 위 문장에서 “수치가 아닌 데이터 지원합니다”를 “수치가 아닌 데이터 지원합니다”로 수정합니다.(김*식 님)
  15. (p217) 35번 주석의 1번째 줄, (p218) 그림 4-23, (p219) 위에서 1,3,4,5,9번째 줄, 끝에서 5번째 줄, (p220) 그림 4-24, (p228) 그림 5-1, (p230) 그림 5-4에서 “Verginica”를 “Virginica”로 수정합니다.(김*식 님)
  16. (p322) 연습문제 6번에서 “커널 PCA”를 “랜덤 투영”으로 수정합니다.(김*식 님)
  17. (p364) 연습문제 7번에서 “정상치 탐지”를 “특이치 탐지”로 수정합니다.(김*식 님)
  18. (p277) 아래에서 10번째 줄에서 “테스트 세트에서 0.92%의 정확도를 얻었습니다. OOB 평가는 2% 이상 낮아”를 “테스트 세트에서 91.2%의 정확도를 얻었습니다. OOB 평가는 약 2% 정도 낮아”로 수정합니다.(김*식 님)
  19. (p397) 페이지 중앙 부분의 TIP 첫 번째 줄에서 “익숙지해지는“을 “익숙해지는“으로 수정합니다.(김*식 님)
  20. (p464) 그림 11-8에서 위쪽 화살표의 시작 지점에 “AdaGrad”를 추가합니다.(김*식 님)
  21. (p520) 아래에서 4번째 줄에 “다른 옵티마이저를 사용됩니다“를 “다른 옵티마이저를 사용합니다“로 수정합니다.(김*식 님)
  22. (p596) 2번 항목의 끝에서 2번째 줄에 np.expanddims()np.expand_dims()로 수정합니다.(김*식 님)
  23. (p736) 위에서 첫 번째 줄에 “NLP는 처음 생각만큼”을 “NSP는 처음 생각만큼”으로 수정합니다.(김*식 님)
  24. (p654) 위에서 2번째 줄에 “정확히 동일한 ARIMA 방식을 사용해”를 삭제합니다.(김*식 님)
  25. (p765) 아래에서 4번째 줄에 “(RBM, 부록 E 참고)”를 “(RBM)”로 수정합니다.(김*식 님)
  26. (p770) 위에서 3번째 줄에 tf.keras.regularizers.l1(1e-3)tf.keras.regularizers.l1(1e-4)로 수정합니다.(김*식 님)
  27. (p799) 페이지 중간의 5번 항목, TIP의 1번째 줄, (p800) 위에서 2번째 줄에서 “잡음“을 “잡음“로 수정합니다.(김*식 님)
  28. (p839) 32번 주석의 1번째 줄에서 “댓글의 일부분니다”를 “댓글의 일부분니다”로 수정합니다.(김*식 님)
  29. (p184) 페이지 중간 CAUTION 바로 윗 줄에 “두 배로 어나면”을 “두 배로 어나면”으로 수정합니다.(김*식 님)
  30. (p212) 그림 4-20의 범례에서 훈련 세트와 검증 세트 레이블을 서로 바꿉니다.(황*재 님)
  31. (p100) 두 번째 코드 블록의 출력에서 people_per_housepopulation_per_house로 수정합니다.(고*현 님)
  32. (p233) 옮긴이 주석에서 “식 5-10“을 “식 5-7“로 수정합니다.
  33. (p358) 위에서 첫 번째 줄에 “ 번째 백분위수(4%)를”를 “ 번째 백분위수(2%)를”로 정정합니다.(황*재 님)
  34. (p360) 아래에서 네 번째 줄에 “$latex \hat{\theta}=1.5“를 “$latex \hat{\theta}=1.66“로 정정합니다.(황*재 님)
  35. (p614) 위에서 세 번째 줄에서 \alpha+\beta^2+\gamma^2\alpha \cdot \beta^2 \cdot \gamma^2로 수정합니다. 위에서 여섯 번째 줄에서 \gamma = 1.1\gamma = 1.15로 수정합니다.(이*경 님)
  36. (p653) 식 15-3에서 y_{(t-1)}y_{(t-i)}\epsilon_{(t-1)}\epsilon_{(t-i)}로 수정합니다.(이*경 님)
  37. (p670) 페이지 윗 부분에 있는 to_seq2seq_dataset() 함수에서 S[:, 1:, 1]S[:, 1:, target_col]로 수정합니다.(이*경 님)
  38. (p814) 아래에서 4번째 줄에 “68번 이상의 스텝을”을 “63번 이상의 스텝을”로 수정해 주세요.(이*경 님)
  39. (p833) 위에서 4번째 줄에 “\epsilon실론입니다”를 “\epsilon실론입니다”로 수정해 주세요.(이*경 님)
  40. (p839) 아래에서 3번째 줄에서 “손실을 그래프로 그려보는 것이 좋습니다”를 “보상을 그래프로 그려보는 것이 좋습니다”로 수정합니다.(이*경 님)
  41. (p843) 위에서 10번째 줄에서 “모든 최대 이익을 뺍니다”를 “최대 이익을 뺍니다”로 수정합니다.(이*경 님)
  42. (p60) 그림 1-24의 범례에서 “(점선) 모든 데이터로 만든 선형 모델”을 “(점선) 일부 데이터로 만든 선형 모델”로 수정하고, “(실선) 일부 데이터로 만든 선형 모델”을 “(실선) 모든 데이터로 만든 선형 모델”로 수정합니다.
  43. (p664) 맨 아래 코드 블록 바로 윗 문장 끝에 다음 주석을 추가합니다. “옮긴이_ to_numpy() 메서드에서 데이터 변환 에러가 발생하는 경우 to_numpy(np.float32)를 사용하세요.”

Your Inputs