[파이썬 라이브러리를 활용한 머신러닝], [파이썬을 활용한 머신러닝 쿡북] 사이킷런 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)

답글 남기기

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

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.