카테고리 보관물: Machine Learning

“머신러닝 파워드 애플리케이션” 사이킷런 1.0 업데이트 완료!

<머신러닝 파워드 애플리케이션>의 주피터 노트북을 사이킷런 1.0에 맞추어 업데이트했습니다. 업데이트된 노트북은 깃허브 저장소에서 확인하실 수 있습니다. 감사합니다! 🙂

[핸즈온 머신러닝 2판], [머신 러닝 교과서 3판] 사이킷런 1.0 업데이트 완료

[핸즈온 머신러닝 2판], [머신 러닝 교과서 3판]의 주피터 노트북을 사이킷런 1.0 버전에 맞추어 모두 테스트하여 깃허브에 반영하였습니다. 변경이 필요한 부분은 수정하거나 주석을 추가했습니다. 아래 에러타를 참고해 주세요.

감사합니다! 🙂

핸즈온 머신러닝 2판

  • (p197) 넘파이 1.20버전부터 np.int가 deprecated 되었기 때문에 첫 번째 코드 블럭의 마지막 줄에서 astype(np.int)를 astype(int)로 수정합니다.
  • (p179) 사이킷런 1.0에서 get_feature_names() 메서드를 가진 변환기에 get_feature_names_out() 메서드가 추가되었고 get_feature_names()는 deprecated 되어 1.2 버전에서 삭제될 예정입니다. 따라서 23번 주석에서 get_feature_names()를 get_feature_names_out()으로 수정합니다.

머신 러닝 교과서 3판

  • (p157) 넘파이 1.20버전부터 np.int가 deprecated 되었기 때문에 아래에서 7번째 줄에 OrdinalEncoder(dtype=np.int)를 OrdinalEncoder(dtype=int)로 수정합니다. (p158) 위에서 12번째 줄에 “np.int로 지정했습니다”를 “int로 지정했습니다”로 수정합니다. (p159) 위에서 14번째 줄에 OrdinalEncoder()를 OrdinalEncoder(dtype=int)로 수정합니다.
  • (p236) 아래에서 5번째 줄 끝에 다음 주석을 추가합니다. “구현되어 있습니다.<주석>역주 사이킷런 1.2 버전에서 TSNE 클래스의 init 매개변수의 기본값이 'random'에서 'pca'로 바뀔 예정입니다.”
  • (p271) 사이킷런 1.0 버전에서 plot_confusion_matrix()가 deprecated 되었고 1.2 버전에서는 삭제될 예정입니다. 위에서 4번째 줄에서 from sklearn.metrics import plot_confusion_matrix를 from sklearn.metrics import ConfusionMatrixDisplay로 수정합니다. 위에서 5번째 줄과 아래에서 4번째 줄에서 plot_confusion_matrix(pipe_svc, ...)를 ConfusionMatrixDisplay.from_estimator(pipe_svc, ...)로 수정합니다.
  • (p278) 사이킷런 1.0 버전에서 plot_roc_curve()가 deprecated 되었고 1.2 버전에서는 삭제될 예정입니다. 위에서 6번째 줄에서 from sklearn.metrics import plot_roc_curve를 from sklearn.metrics import RocCurveDisplay로 수정합니다. 위에서 12번째 줄에서 plot_roc_curve(pipe_lr, ...)를 RocCurveDisplay.from_estimator(pipe_lr, ...)로 수정합니다.
  • (p279) 사이킷런 1.0 버전에서 plot_precision_recall_curve()가 deprecated 되었고 1.2 버전에서는 삭제될 예정입니다. 위에서 5번째 줄에서 from sklearn.metrics import plot_precision_recall_curve를 from sklearn.metrics import PrecisionRecallDisplay로 수정합니다. 위에서 11번째 줄에서 plot_precision_recall_curve(pipe_lr, ...)를 PrecisionRecallDisplay.from_estimator(pipe_lr, ...)로 수정합니다.
  • (p328) 사이킷런 1.0에서 히스토그램 기반 부스팅이 experimental 모듈 아래에서 벗어났습니다. 따라서 위에서 7번째 줄에서 시작하는 문장부터 9번째 줄까지 다음 내용을 삭제합니다. “이 클래스는 아직 실험적이기 때문에 사용하기 전에 먼저 활성화해야 합니다.
    from sklearn.experimental import enable_hist_gradient_boosting
  • (p329) XGBoost 1.3.0에서 이진 분류 기본 평가 지표가 'error'에서 'logloss'로 변경되었습니다. 또한 향후 레이블 인코딩을 수행하지 않는다는 경고가 발생합니다. 경고를 없애기 위해 위에서 6번째 줄에 XGBClassifier(tree_method='hist', random_state=1)을 XGBClassifier(tree_method='hist', eval_metric='logloss', use_label_encoding=False, random_state=1)로 수정합니다.
  • (p415) 아래에서 6번째 줄에 price_std 배열을 2차원으로 바꾸기 위해 inverse_transform(price_std)를 inverse_transform(price_std.reshape(-1,1))로 수정합니다.
  • (p419) 사이킷런 1.0에서 'absolute_loss'가 deprecated 되었고 1.2 버전에서 삭제될 예정이기 때문에 대신 'absolute_error'를 사용합니다. 아래에서 4번째 줄에 loss='absolute_loss'를 loss='absolute_error'로 수정합니다.
  • (p428) 사이킷런 1.0에서 get_feature_names() 메서드를 가진 변환기에 get_feature_names_out() 메서드가 추가되었고 get_feature_names()는 deprecated 되어 1.2 버전에서 삭제될 예정입니다. 주석의 끝에서 2번째 줄에 get_feature_names()를 get_feature_names_out()으로 수정합니다.
  • (p436) 사이킷런 1.0에서 'mse'가 deprecated 되었고 1.2 버전에서 삭제될 예정이기 때문에 대신 'squared_error'를 사용합니다. 위에서 11번째 줄에 criterion='mse'를 criterion='squared_error'로 수정합니다.

[파이썬 라이브러리를 활용한 머신러닝], [파이썬을 활용한 머신러닝 쿡북] 사이킷런 1.0 업데이트 완료

안녕하세요. [파이썬 라이브러리를 활용한 머신러닝], [파이썬을 활용한 머신러닝 쿡북]의 주피터 노트북 코드를 사이킷런 1.0 버전에 맞추어 모두 테스트하여 깃허브에 반영하였습니다. 또한 변경이 필요한 본문을 수정하고 주석을 추가했습니다. 다음 에러타 내용을 참고해 주세요.

감사합니다! 🙂

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

  1. (p62) 위에서 3번째 줄에 다음처럼 주석을 추가합니다. “보스턴 주택가격 데이터셋<주석>옮긴이_ 보스턴 주택가격 데이터셋의 특성에는 흑인 인구 비율이 들어 있어 요즘 시대에 적절치 않다는 의견이 많았습니다. 사이킷런 1.0 버전에서 load_boston() 함수가 deprecated 되었고 1.2 버전에서 삭제될 예정입니다.</주석>을 사용하겠습니다”
  2. (p136, 137) In [79], [80]에서 Axes3D가 자동으로 그림에 추가되는 방식은 matplotlib 3.4 버전에서 deprecated 되었기 때문에 관련 경고를 피하기 위해 ax = Axes3D(figure, elev=-152, azim=-26)을 ax = Axes3D(figure, elev=-152, azim=-26, auto_add_to_figure=False); figure.add_axes(ax)로 수정합니다.
  3. (p156) In [102]에서 다음처럼 MLPClassifier 객체 생성시 max_iter 매개변수를 지정합니다. mlp = MLPClassifier(max_iter=1000, random_state=0)
  4. (p205) In [26]의 첫 번째 줄에서 np.bool이 1.20버전부터 deprecated 되었기 때문에 대신 bool을 사용합니다. mask = np.zeros(people.target.shape, dtype=bool)
  5. (p223) 4번째 줄에 다음과 같이 주석을 추가합니다. “결과를 비교해 보겠습니다.<주석>옮긴이_ 사이킷런 1.2 버전에서 TSNE 클래스의 init 매개변수의 기본값이 'random'에서 'pca'로 바뀔 예정입니다.</주석> t-SNE는 새 데이터를..”
  6. get_feature_names() 메서드를 가진 변환기에 get_feature_names_out() 메서드가 추가되었고 get_feature_names()는 deprecated 되어 1.2 버전에서 삭제될 예정입니다. 따라서 (p281) 마지막 문장과 In [13],  (p294) 첫 번째 문장과 In [34], (p297) 마지막 문장과 In[39], (p320) 첫 번째 문장과 In [72], (p423) In [16], (p426) In [21], (p430) In [30], (p434) In [35]와 In [36], (p435) In [38], (p437) In [41], (p450) In [51], (p451) In [55]에서 get_feature_names()를 get_feature_names_out()으로 수정합니다.
  7. (p366) In [52]에서 0 나눗셈 경고를 피하기 위해 다음처럼 zero_division 매개변수를 지정합니다. classification_report(y_test, pred_most_frequent, target_names=["9 아님", "9"], zero_division=0))
  8. (p443) 아래에서 4번째 줄에 다음처럼 주석을 추가합니다. “설치 페이지(…)를 참고하세요.<주석>옮긴이_ 최신 버전의 tweepy 패키지를 설치할 경우 konlpy에서 StreamListener가 없다는 에러가 발생하므로 3.10버전을 설치해 주세요. pip install tweepy==3.10</주석> KoNLPy는 5개의…”
  9. (p335) 주석 7번 끝에 다음을 추가합니다. “사이킷런 1.0 버전에서 그룹을 유지하면서 클래스 비율에 맞게 분할하는 StratifiedGroupKFold가 추가되었습니다.”
  10. (p293) 주석 15번 끝에 다음 문장을 추가합니다. “사이킷런 1.0 버전부터는 PolynomialFeatures 클래스의 degree 매개변수에 변환할 최소 차수과 최대 차수를 튜플로 전달할 수 있습니다.”

파이썬을 활용한 머신러닝 쿡북

  1. (p75, 79, 81, 85, 86, 88, 91, 93, 95, 97, 99, 100, 102, 107, 108, 110) 타이타닉 데이터를 다운로드하는 https://tinyurl.com/titanic_csv 주소에 문제가 생겨서 https://bit.ly/titanic_csv_data로 바꿉니다.
  2. (p177) 덧붙임의 첫 번째 문단 끝에 다음 주석을 추가합니다. “…설치할 수 있습니다.<주석>옮긴이_ 최신 버전의 tweepy 패키지가 설치될 경우 konlpy에서 StreamListener가 없다는 에러가 발생하므로 3.10버전을 설치해 주세요. pip install tweepy==3.10</주석>
  3. 사이킷런 1.0에서 get_feature_names() 메서드를 가진 변환기에 get_feature_names_out() 메서드가 추가되었고 get_feature_names()는 deprecated 되어 1.2 버전에서 삭제될 예정입니다. 따라서 (p128) 마지막 줄, (p129) 1번째 줄, (p156) 위에서 15, 17번째 줄, (p179) 마지막 줄, (180) 2번째 줄, (p493) 아래에서 2번째 줄에서 get_feature_names를 get_feature_names_out으로 수정합니다.
  4. (p229) 위에서 3번째 줄에서 corner의 값을 정수로 변환하기 위해 corner[0].astype('int')로 수정합니다.
  5. (p252) 9.4절 [해결]의 첫 번째 문장 끝에 다음 주석을 추가합니다. “… 차원을 축소합니다.<주석>옮긴이_ 기본값인 init=None일 때 n_components가 n_samples나 n_features 보다 작으면 init='nndsvd'가 됩니다. 사이킷런 1.1버전부터 이 값이 'nndsvda'로 바뀔 예정입니다.</주석>
  6. (p252) 아래에서 9번째 줄에서 NMF 객체를 만들 때 반복횟수를 늘려주기 위해 max_iter 매개변수를 추가합니다. nmf = NMF(n_components=10, max_iter=1000, random_state=1)
  7. (p283) 11.2절 [해결]의 첫 번째 문장 끝에 다음 주석을 추가합니다. “…모델을 만듭니다.<주석>옮긴이_ 보스턴 주택가격 데이터셋의 특성에는 흑인 인구 비율이 들어 있어 요즘 시대에 적절치 않다는 의견이 많았습니다. 사이킷런 1.0 버전에서 load_boston() 함수가 deprecated 되었고 1.2 버전에서 삭제될 예정입니다.</주석>
  8. 로지스틱 회귀 객체를 만들 때 반복횟수를 늘려주기 위해 (p300) 위에서 15번째 줄, (p311) 위에서 5번째 줄에 max_iter 매개변수를 추가합니다. classifier = LogisticRegression(max_iter=1000)
  9. (p312) 위에서 4번째 줄에 0 나눗셈 경고를 피하기 위해 다음처럼 zero_division 매개변수를 지정합니다. print(classification_report(target_test, target_predicted, labels=[0,1,2,3], zero_division=0))
  10. 사이킷런 0.22 버전에서 solver 매개변수의 기본값이 'liblinear'에서 'lbfgs'로 변경되었습니다. 'lbfgs'는 'l2' 페널티만 지원합니다. 예제에서 'l1''l2' 페널티를 그리드서치로 탐색하기 위해 solver='liblinear'로 지정합니다. 또 반복 횟수를 늘려주기 위해 max_iter=1000을 추가합니다. (p318) 위에서 13번째 줄, (p320) 아래에서 3번째 줄, (p323) 위에서 15번째 줄, (p325) 아래에서 7번째 줄, (p327) 아래에서 8번째 줄, (p329) 위에서 11번째 줄에서 LogisticRegression()을 LogisticRegression(solver='liblinear', max_iter=1000)으로 바꿉니다.
  11. (p331) 위에서 8번째 줄에 반복 횟수를 늘려 주기 위해 max_iter 변수를 추가합니다. logit = linear_model.LogisticRegressionCV(max_iter=1000, Cs=100)
  12. (p332) 사이킷런 1.0에서 매개변수 변화에 따른 경고가 발생하지 않으므로 아래에서 4번째 줄을 다음처럼 수정합니다. logistic = linear_model.LogisticRegression(max_iter=1000)
  13. 사이킷런 1.0에서 매개변수 변화에 따른 경고가 발생하지 않으므로 위에서 (p333) 5번째 줄에 iid=False, 7번째 줄에 cv=3, 아래에서 4번째 줄에 iid=False, (p334) 위에서 8번째 줄에 cv=3을 삭제합니다.
  14. (p335) 위에서 2 번째 줄 끝에서 시작되는 문장, 아래에서 3번째 줄에 있는 문장, 마지막 줄에 있는 문장인 “경고를 출력하지 않기 위해 … 로 지정합니다”를 삭제합니다.
  15. (p355) 결정 트리의 criterion 매개변수 값인 mae가 사이킷런 1.0에서 deprecated되었고 1.2 버전에서 삭제될 예정입니다(mse도 마찬가지). 대신 'absolute_error'를 사용합니다. 위에서 6번째 줄을 decisiontree_mae = DecisionTreeRegressor(criterion="absolute_error", random_state=0)으로 수정합니다.
  16. (p374) 사이킷런 1.0에서 히스토그램 기반 부스팅이 experimental 모듈 아래에서 벗어났습니다. 따라서 위에서 8번째 줄 끝에서 시작하는 문장부터 12번째 줄까지 다음 내용을 삭제합니다.
    “이 클래스들은 실험적이기 때문에 명시적으로 사용한다는 것을 선언해야 합니다.
    # 히스토그램 기반의 그레이디언트 부스팅을 활성화하고 라이브러리를 임포트합니다.
    from sklearn.experimental import enable_hist_gradient_boosting
  17. (p397) 아래에서 2번째 줄에 compute_class_weight 함수에 키워드 매개변수를 추가합니다. compute_class_weight('balanced', classes=[0,1], y=target)

[혼자 공부하는 머신러닝+딥러닝], [Do It! 딥러닝 입문] 사이킷런 1.0 테스트 완료

[혼자 공부하는 머신러닝+딥러닝], [Do It! 딥러닝 입문]의 주피터 노트북 코드를 최신 사이킷런 1.0 버전에서 모두 테스트하여 깃허브에 반영하였습니다. 책을 보실 때 참고하세요. 감사합니다!

사이킷런 1.0 RC1이 릴리즈되었습니다.

10년이 훌쩍 넘었습니다. 그동안 명실공히 표준 머신러닝 라이브러리로 자리매김한 사이킷런이 드디어 버전 1.0의 RC1을 릴리스했습니다. 이번에도 많은 변화가 있습니다.

  • loss나 criterion 매개변수마다 서로 다르게 지정되던 제곱 오차를 ‘squared_error’로 통일합니다. 마찬가지로 절대값 오차를 ‘absoulte_error’로 통일합니다.
  • 판다스 데이터프레임으로 모델을 훈련할 때 열 이름을 feature_names_in_ 속성에 저장하여 관리됩니다. 훈련된 모델을 열 이름이 다른 데이터프레임에 사용하면 오류가 납니다.
  • 흑인 비율이 특성으로 들어가 있어 말이 많았던 보스턴 데이터셋이 deprecated 됩니다. 1.2 버전에서는 사라진다고 하네요.
  • 보정 곡선을 그려주는 CalibrationDisplay가 추가됩니다.
  • 특성과 타깃 사이의 피어슨 r 값을 계산해 주는 r_regression 함수가 추가됩니다.
  • OneClassSVM의 SGD 버전인 SGDOneClassSVM 클래스가 추가됩니다.
  • Ridge 클래스에 ‘lbfgs’ solver가 추가됩니다. 선형 모델에 있던 normalize 매개변수가 deprecated 됩니다. 1.2 버전에서는 삭제될 예정입니다. 대신 StandardScaler를 사용하세요.
  • StratifiedKFold와 GroupKFold가 합쳐진 StratifiedGroupKFold가 추가됩니다.

이 외에도 많은 기능이 추가되고 개선되었습니다. 배울 게 한층 더 늘었네요. ㅎ 전체 릴리스 노트는 사이킷런 웹사이트를 참고하세요! 🙂

“머신러닝 파워드 애플리케이션”이 출간되었습니다!

드디어 <머신러닝 파워드 애플리케이션>이 출간되었습니다! 이 책은 아마존 베스트셀러인 Building Machine Learning Powered Applications의 번역서입니다.

이 책에는 머신러닝 제품을 만들기 위해 고려해야할 많은 내용이 포함되어 있습니다. 머신러닝 제품을 만들기 위해 필요한 기술에서 알고리즘이 차지하는 부분은 작습니다. 책을 읽으면서 얼마나 많은 것들을 준비하고 생각해야 하는지 새삼 깨달았습니다. 책을 번역하면서 많은 것을 배웠습니다. 다른 분들에게도 도움이 되었으면 좋겠습니다. 감사합니다! 🙂

  • 온라인/오프라인 서점에서 판매중입니다. [Yes24], [교보문고], [알라딘]
  • 304페이지, 풀 컬러: 27,000원 –> 24,300원
  • 이 책에 실린 코드는 깃허브에 있습니다.

“머신러닝 파워드 애플리케이션”이 곧 출간될 예정입니다!

여름 내 작업했던 <머신러닝 파워드 애플리케이션>이 곧 출간됩니다. 아마도 다음 주 부터 온라인 서점에서 예약 판매가 시작될 예정입니다.

이 책은 아마존 베스트 셀러인 <Building Machine Learning Powered Applications>의 번역서입니다. 많은 머신러닝 책이 알고리즘 설명에 집중하고 있다보니 상대적으로 머신러닝 애플리케이션을 만드는데 도움이 되는 자료는 찾기 힘듭니다. 이 책은 이런 부분의 간극을 채우기 위한 좋은 시도입니다. 문제 정의, 데이터셋 찾기, 모델 구축, 디버깅, 배포에 이르기까지 실전에서 고려해야 할 좋은 가이드와 피해야 할 위험 요소를 잘 설명하고 있습니다. 특히 이 분야 리더들과의 인터뷰를 함께 싣고 있어서 설명이 조금 더 피부에 와 닿는 것 같습니다.

저자 에마뉘엘 아메장이 특별히 한국어판을 위한 서문을 보내 주었습니다. 책에 에마뉘엘의 사진과 함께 실을 예정인데요. 맛보기로 에마뉘엘이 쓴 서문을 공개합니다! ㅎ

많은 관심 부탁드립니다! 😀

[핸즈온 머신러닝 2], [GAN 인 액션], [파이썬을 활용한 머신러닝 쿡북], [케라스 창시자에게 배우는 딥러닝], [파이토치로 배우는 자연어 처리] 텐서플로 2.6과 파이토치 1.9 버전 테스트 완료

[핸즈온 머신러닝 2], [GAN 인 액션], [파이썬을 활용한 머신러닝 쿡북], [케라스 창시자에게 배우는 딥러닝]의 주피터 코드를 텐서플로 2.6, 케라스 2.6 버전에서 테스트하여 깃허브에 반영하였습니다. [파이토치로 배우는 자연어 처리]는 파이토치 1.9 버전에서 테스트하여 깃허브에 반영하였습니다. 책을 보실 때 참고하세요. 감사합니다!

“머신 러닝 교과서 3판”이 출간되었습니다.

세바스찬 라시카Sebastian Raschka와 바히드 미자리리Vahid Mirjalili가 쓴 아마존 베스트셀러 <Python Machine Learning 3rd Ed.>의 번역판인 <머신 러닝 교과서 3판>이 출간되었습니다!

3판은 사이킷런과 텐서플로 최신 버전의 변경 사항을 담았으며 코랩에서 실행할 수 있습니다. 특히 딥러닝 파트는 완전히 새롭게 리뉴얼되어 콘텐츠가 크게 보강되었습니다. 무엇보다도 이번에 새롭게 GAN강화 학습이 추가되어 머신러닝의 끝판왕이라고 부를만합니다!

출간에 맞추어 동영상 강의를 제작해 유튜브에 올리고 있습니다. 혼자 공부하시는 분들에게 도움이 되었으면 좋겠습니다. 궁금한 점이 있다면 블로그나 카카오 오픈채팅(http://bit.ly/tensor-chat)으로 알려 주세요!

온라인/오프라인 서점에서 판매 중입니다! 868페이지, 풀 컬러: 39,600원 [Yes24], [교보문고], [알라딘]

“(번역개정판) 파이썬 라이브러리를 활용한 머신러닝” 주피터 노트북 업데이트 및 에러타 안내

<파이썬 라이브러리를 활용한 머신러닝>의 주피터 노트북을 사이킷런 0.24.1 버전에 맞추어 모두 재실행하여 깃허브에 업데이트했습니다. 또 사이킷런 버전 변화에 따른 에러타를 새로 추가했습니다. 아래 목록을 참고해 주세요.

이 책은 2017년에 처음 번역서가 출간되었고 2019년에 개정판을 냈습니다. 처음 출간 시에는 흑백이었지만 개정판을 내면서 컬러를 입혔습니다. 이렇게 오랫동안 생명력을 유지할 수 있었던 것은 많은 독자들 덕분입니다. 다시 한번 이 책을 선택해 주신 독자들에게 감사드립니다. 책을 읽은 시간이 결코 아깝지 않기를 바랄 뿐입니다.

감사합니다.

  1. (p29) Enthought Canopy 항목을 다음으로 교체합니다.
    ActivePython (https://www.activestate.com/products/python/)
    또 다른 범용 파이썬 배포판입니다. NumPy, SciPy, matplotlib, pandas, Jupyter, scikit-learn을 포함하고 있습니다. 무료로 사용할 수 있는 Community Edition과 기업을 위한 유료 버전도 있습니다. ActivePython은 파이썬 2.7, 3.5, 3.6을 지원하며 macOS, 윈도우, 리눅스에서 사용할 수 있습니다.
  2. (p34) 위에서 3번째 줄 “%matplotlib inline을 사용합니다” 뒤에 주석을 추가합니다. <주석>옮긴이_ IPython kernel 4.4.0부터는 %matplotlib inline 매직 명령을 사용하지 않더라도 맷플롯립 1.5 이상에서는 주피터 노트북에 바로 이미지가 출력됩니다.</주석>
  3. (p36) <노트>의 마지막 줄 “만약 이런 매직 커맨드를 사용하지 않는다면 이미지를 그리기 위해 plt.show 명령을 사용해야 합니다”를 “또는 IPython kernel 4.4.0과 맷플롯립 1.5 버전 이상을 사용한다고 가정합니다.”로 수정합니다.
  4. (p37) 1.6절 바로 위 문장 끝에서 “파이썬 3.7 업그레이드하세요”를 “파이썬 3.7 이상으로 업그레이드하세요”로 수정합니다.
  5. (p38) 주석에 포함된 블로그 링크 goo.gl/FYjbK3 을 bit.ly/2K73mA4 로 수정합니다.
  6. (p65) In [14] 코드 블럭 위 문장 끝 “이웃의 수를 3으로 지정합니다”에 주석을 추가합니다. <주석>옮긴이_ KNeighborsClassifier 클래스의 n_neighbors 매개변수 기본값은 5입니다.</주석>
  7. (p87) 22번 주석에서 “LogisticRegression의 solver 매개변수를 지정하지 않으면 scikit-learn 0.22 버전부터 기본값 이 liblinear에서 lbfgs로 변경된다는 경고 메세지가 출력됩니다.”를 삭제합니다. 23번 주석에서 “liblinear를 사용하는 LogisticRegression 과 LinearSVC는”를 “LogisticRegression 과 LinearSVC는”로 수정합니다.
  8. (p94) 28번 주석에서 마지막 문장 “multi_class 매개변수를 지정하지 않으면 0.22 버전부터 기본값이 ovr에서 auto로 변경된다는 경고가 출력됩니다“를 “0.22 버전부터는 multi_class의 기본값이 ‘ovr’에서 ‘auto’로 바뀌었습니다“로 수정합니다.
  9. (p106) 페이지 중간에서 “scikit-learn은 사전 가지치기만 지원합니다” 끝에 주석을 추가합니다. <주석>옮긴이_ 사이킷런 0.22 버전에서 비용 복잡도 기반의 사후 가지치기를 위한 ccp_alpha 매개변수가 추가되었습니다.</주석>
  10. (p113) In [67] 코드 블럭에서 X_train = data_train.date[:, np.newaxis]를 X_train = data_train.date.to_numpy()[:, np.newaxis]로 수정하고 X_all = ram_prices.date[:, np.newaxis]를 X_all = ram_prices.date.to_numpy()[:, np.newaxis]로 수정합니다.
  11. (p115) 42번 주석 끝에서 “0.25 버전에서는 삭제됩니다”를 “1.0 버전에서는 삭제됩니다”로 수정합니다.
  12. (p116) 44번 주석 “옮긴이_ n_estimators 매개변수의 기본값은 10입니다. n_estimators 매개변수를 지정하지 않으면 scikit-learn 0.22 버전부터 기 본값이 100으로 바뀐다는 경고가 출력됩니다”를 “scikit-learn 0.22 버전부터 n_estimators의 기본값이 10에서 100으로 바뀌었습니다.”로 수정합니다.
  13. (p142) Out [84] 에서 “훈련 세트 정확도: 1.00“을 “훈련 세트 정확도: 0.90“으로 수정하고 “테스트 세트 정확도: 0.63“을 “테스트 세트 정확도: 0.94“로 수정합니다. 그 아래 문장에서 “훈련 세트에는 완벽한 점수를 냈지만 테스트 세트에는 63% 정확도라서 이 모델은 상당히 과대적합되었습니다”를 “훈련 세트에는 90% 정확도를 냈지만 테스트 세트에는 94% 정확도라서 이 모델은 상당히 과소적합되었습니다”로 수정합니다.
  14. (p144) Out [88]에서 “훈련 세트 정확도: 0.948 테스트 세트 정확도: 0.951“를 “훈련 세트 정확도: 0.984 테스트 세트 정확도: 0.972“로 수정합니다. 그 아래 문단에서 “훈련 세트와 테스트 세트의 정확도가 100%에서는 조금 멀어졌지만 매우 비슷해서 확실히 과소적합된 상태입니다“를 “훈련 세트와 테스트 세트의 정확도가 모두 상승하여 과소적합이 많이 해소되었습니다“로 수정합니다. In [89] 코드 블럭에서 svc = SVC(C=1000)을 svc = SVC(C=20)으로 수정합니다.
  15. (p145) Out [89]에서 “테스트 세트 정확도: 0.972“를 “테스트 세트 정확도: 0.979“로 수정합니다. 그 아래 문장에서 “C 값을 증가시켰더니 모델의 성능이 97.2%로 향상되었습니다”를 “C 값을 증가시켰더니 모델의 성능이 97.9%로 향상되었습니다”로 수정합니다.
  16. (p152) In [96] 코드에서 mlp = MLPClassifier(solver='lbfgs', random_state=0, hidden_layer_size=[10, 10])를 mlp = MLPClassifier(solver='lbfgs', random_state=0, hidden_layer_size=[10, 10], max_iter=1000)로 수정합니다.
  17. (p159) 75번 주석에서 “『핸즈온 머신러닝』 (한빛미디어, 2018)”을 “『핸즈온 머신러닝 2판』 (한빛미디어, 2020)”로 수정합니다.
  18. (p170) In [122] 코드에서 logreg=LogisticRegression()을 logreg=LogisticRegression(max_iter=1000)로 수정합니다.
  19. (p191) In [11] 코드에서 svm = SVC(C=100)을 svm = SVC(gamma='auto')로 수정합니다.
  20. (p213) 주석 25번을 “NMF에서 초기화 방식을 지정하는 init 매개변수의 기본값은 None으로 n_components가 샘플이나 특성 개수보다 작으면 ‘nndsvd’를 사용하고 그렇지 않으면 ‘random’을 사용합니다. ‘nndsvd’는 특잇값 분해로 얻은 U와 V 행렬의 절댓값에 S 행렬의 제곱근을 곱해 W와 H 행렬을 만듭니다. 그다음 W와 H 행렬에서 1e-6 보다 작은 값은 0으로 만듭니다. ‘nndsvda’는 0을 입력 행렬의 평균값으로 바꿉니다. scikit-learn 1.1 버전부터는 ‘nndsvd’에서 ‘nndsvda’로 기본값이 바뀝니다. ‘random’은 데이터 평균을 성분의 개수로 나눈 후 제곱근을 구하고, 그런 다음 정규분포의 난수를 발생시켜 앞에서 구한 제곱근을 곱하여 H와 W 행렬을 만듭니다. 이는 데이터 평균값을 각 성분과 두 개의 행렬에 나누어 놓는 효과를 냅니다.”로 바꿉니다.
  21. (p214) In [37] 코드에서 mglearn.plots.plot_nmf_faces(X_train, X_test, image_shape)을 mglearn.plots.plot_nmf_faces(X_train, X_test[:3], image_shape)로 수정합니다.
  22. (p215) In [38] 코드에서 nmf = NMF(n_components=15, random_state=0, max_iter=1000, tol=1e-2)를 nmf = NMF(n_components=15, init='nndsvd', random_state=0, max_iter=1000, tol=1e-2)로 수정합니다.
  23. (p218) In [42] 코드에서 nmf = NMF(n_components=3, random_state=42, max_iter=1000, tol=1e-2)를 nmf = NMF(n_components=3, init=’nndsvd’, random_state=42, max_iter=1000, tol=1e-2)로 수정합니다.
  24. (p234) In [50] 코드에서 nmf = NMF(n_components=100, random_state=0, max_iter=1000, tol=1e-2)를 nmf = NMF(n_components=100, init=’nndsvd’, random_state=0, max_iter=1000, tol=1e-2)로 수정합니다.
  25. (p238) 주석 35 끝에 다음 문장을 추가합니다. “scikit-learn 0.23 버전부터 KMeans 클래스는 OpenMP 기반의 병렬화를 제공합니다. 이 때문에 n_jobs 매개변수를 사용하면 경고가 발생하며 이 매개변수는 1.0 버전에서 삭제될 예정입니다.”
  26. (p284) 주석 10번에서 다음 문장을 삭제합니다. “0.20.1 버전 이상에서 (열_리스트, 변환기_객체) 로 전달하면 이와 관련된 경고가 발생하며 0.22 버전에서는 (열_리스트, 변환기_객체) 형식이 삭제될 예정입니다.”
  27. (p309) 주석 31번을 삭제하고 4.7.3절 아래 4번째 줄 “도달할 때까지 하나씩 추가하는 방법입니다.” 끝에 다음 주석을 추가합니다. <주석>옮긴이_ 이를 전진 선택법(foward stepwise selection)과 후진 선택법(backward stepwise selection)이라고도 부릅니다. scikit-learn 0.24 버전에서 추가된 SequentialFeatureSelector 클래스는 scoring 매개변수에 지정된 측정 지표의 교차 검증 점수를 기준으로 특성을 하나씩 추가하거나 제거합니다. scoring 매개변수의 기본값은 회귀일 경우에는 R^2, 분류일 경우에는 정확도입니다. direction 매개변수가 ‘forward’일 경우 전진 선택법, ‘backward’일 때 후진 선택법을 수행합니다. 기본값은 ‘forward’입니다.</주석>
  28. (p318) 주석 39번에서 다음 문장을 삭제합니다. “0.20 버전부터 정수형 데이터를 변환할 때 이와 관련된 경고가 출력됩니다.”
  29. (p325) Out [5]의 출력을 “[0.967 1. 0.933 0.967 1. ]”로 바꿉니다. 아래에서 3번째 줄에 “여기에서는 cross_val_score가 3-겹 교차 검증을 수행했기 때문에 3개의 점수가 반환되었습니다. 현재 scikit-learn의 기본값은 3-겹 교차 검증이이지만 scikit-learn 0.22 버전부터 5-겹 교차 검증으로 바뀔 것입니다”를 “여기에서는 cross_val_score가 5-겹 교차 검증을 수행했기 때문에 5개의 점수가 반환되었습니다. scikit-learn 0.22 버전부터 3-겹 교차 검증에서 5-겹 교차 검증으로 바뀌었습니다“로 수정합니다.
  30. (p326) In [6] 코드에서 scores = cross_val_score(logreg, iris.data, iris.target, cv=5)를 scores = cross_val_score(logreg, iris.data, iris.target, cv=10)로 수정합니다. Out [6]의 출력을 “교차 검증 점수: [1. 0.933 1. 1. 0.933 0.933 0.933 1. 1. 1. ]”로 바꿉니다. Out [7] 출력 아래 문장에서 “5-겹 교차 검증이 만든 다섯 개의 값을 모두 보면 100%에서 90%까지 폴드에 따라”를 “10-겹 교차 검증이 만든 다섯 개의 값을 모두 보면 100%에서 93%까지 폴드에 따라”로 수정합니다.
  31. (p346) 주석 14번을 삭제하고 주석 13번 끝에 다음 문장을 추가합니다. “사이킷런 0.24 버전에서는 SH(Successive Halving) 방식의 HalvingGridSearchCV가 추가되었습니다. 이 클래스는 모든 파라미터 조합에 대해 제한된 자원으로 그리드서치를 실행한 다음 가장 좋은 후보를 골라서 더 많은 자원을 투여하는 식으로 반복적으로 탐색을 수행합니다.”
  32. (p440, p441) In [43], In [45] 코드에서 spacy.load('en'을 spacy.load('en_core_web_sm'으로 수정합니다.
  33. (p458) 주석 35에서 “『텐서플로 첫걸음』(한빛미디어, 2016)”를 “『혼자 공부하는 머신러닝+딥러닝』(한빛미디어, 2020)”로 수정합니다.
  34. (p463) 위에서 2번째 줄에 “goo.gl/fkQWsN”을 “bit.ly/3c7ylYV”로 수정합니다.
  35. (p467) 주석 9번에서 “『핸즈온 머신러닝』 (한빛미디어, 2018)”를 “『핸즈온 머신러닝 2판』 (한빛미디어, 2020)”로 수정합니다.
  36. (p468) 위에서 2번째 줄에 “goo.gl/lQmL1X”을 “bit.ly/3qnikDx”로 수정합니다.