카테고리 보관물: scikit-learn

Scikit-Learn 1.4, TensorFlow 2.16 릴리스

얼마전 사이킷런 1.4 버전이 릴리스되었습니다. 이번 버전에서 추가된 주요 기능으로 HistGradientBoosting 모델에서 데이터프레임의 범주형 특성을 지원합니다. 또한 Polars 데이터프레임을 지원합니다. 랜덤 포레스트에서 누락된 값을 지원합니다. 이에 대한 자세한 내용은 사용자 가이드 문서를 참고하세요.

텐서플로 2.16 버전이 릴리스되었습니다. 2.16버전부터 케라스 3.0이 기본이 됩니다. 만약 케라스 2.0버전을 사용하고 싶다면 tf-keras 패키지를 설치하여 사용하세요. 2.16버전부터 tf.estimator가 삭제되었습니다. 파이썬 3.12 버전을 지원하기 시작합니다. CUDA 12.3과 cuDNN 8.9.7을 사용합니다. 자세한 내용은 릴리스 노트를 참고하세요.

아직 코랩의 사이킷런 버전은 1.2.2이고 텐서플로 버전은 2.15입니다. 🙂

“핸즈온 머신러닝 3판”이 출간되었습니다!

전세계에서 가장 많이 팔린 머신러닝 도서인 <핸즈온 머신러닝 3판>이 출간되었습니다! 네 오늘은 <만들면서 배우는 생성 AI>와 함께 하루에 두 권이 출간되는 경험을 하네요! 🙂

핸즈온 머신러닝 1판이 2018년에 처음 나와서 정말 선풍적인 인기를 얻었습니다. 그리고 2020년에 2판, 2023년에 3판이 출간되었습니다. 원서의 인기가 번역서에 잘 이어지지 않는 도서도 꽤 많습니다. 하지만 <핸즈온 머신러닝>은 많은 분들의 도움으로 원서 못지 않은 인기를 얻고 있습니다.

3판은 자연어 처리(트랜스포머 + 허깅 페이스)와 생성 모델을 추가로 다루고 시계열 예제를 실전 데이터를 사용하도록 바꾸었습니다. 또한 사이킷런과 케라스의 최신 변경 사항을 알차게 담고 있습니다. 오렐리앙의 실감나는 설명은 여전하구요! 변경 사항에 대한 자세한 내용은 Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition 번역 완료!를 참고하세요.

3판에서 쪽수가 더 늘어나 천 페이지가 넘게 되었습니다. 독자들이 조금 더 편하게 책을 볼 수 있도록 두 권으로 쉽게 분권할 수 있도록 제본되었습니다. 어느 책상, 어느 책장에서도 가장 유용한 책 중 하나가 되리라 믿습니다!

Scikit-Learn 1.3.0이 릴리스되었습니다!

사이킷런 1.3.0이 릴리스되었습니다. 새로운 기능이 많이 추가되었네요. 중요 변경 사항은 다음과 같습니다.

  • scikit-learn-contrib 패키지에 있던 DBSCAN의 계층형 버전인 HDBSCAN 클래스가 사이킷런에 추가되었습니다. HDBSCAN은 다양한 입실론 값에서 DBSCAN을 수행하기 때문에 밀도 다른 클러스터를 감지할 수 있습니다.
  • 범주형 특성을 해당 범주의 타깃 평균 값으로 인코딩하는 TargetEncoder가 추가되었습니다. 범주의 카디널리티(cardinality)가 큰 경우 사용하면 좋습니다. 누락된 값을 지원하며 훈련 시 본 적 없는 범주는 타깃 평균으로 인코딩됩니다.
  • 이제 (회귀와 분류) 결정 트리에서 누락된 값을 지원합니다. 각 분할 기준에서 누락된 값을 왼쪽 또는 오른쪽 노드로 보냈을 때를 평가합니다. 평가가 동일한 경우 오른쪽 노드로 이동됩니다. 훈련시 누락된 값이 없었는데 예측할 때 누락된 값이 입력되면 다수의 샘플을 가진 노드에 할당됩니다.
  • validation_curve() 함수의 결과를 사용해 검증 곡선을 쉽게 그려 주는 ValidationCurveDisplay 클래스가 추가되었습니다.
  • HistGradientBoostingRegressor 클래스에 감마 회귀를 위한 loss='gamma' 매개변수가 추가되었습니다.
  • OrdinalEncoder에 자주 등장하지 않는 범주를 합쳐주기 위해 min_frequencymax_categories 매개변수가 추가되었습니다. 두 매개변수의 기본값은 None으로 희소한 범주를 합치지 않습니다.
  • KMeans 클래스에서 sample_weight 매개변수가 이제 센트로이드 초기화에도 영향을 미칩니다. 그리고 predict 메서드의 sample_weight 매개변수가 deprecated 됩니다.
  • RandomForestClassifier, RandomForestRegressor, ExtraTreesClassifier, ExtraTreesRegressor 클래스의 oob_score 매개변수에 사용자 정의 OOB 함수를 전달할 수 있습니다.
  • GradientBoostingClassifier 클래스에서 subsample < 1.0일 때 자동으로 점수를 계산하여 oob_scores_oob_score_ 속성으로 제공합니다.
  • 제곱 유클리드 거리 게산을 위한 멀티스레드 Cython 루틴이 추가되었습니다. 최근접 이웃의 경우 두 배 정도 빨라졌다는군요. 와우!

사이킷런 1.3.0 버전의 변경 사항에 대한 더 자세한 내용은 릴리스 노트를 참고하세요! 🙂

‘파이썬 라이브러리를 활용한 머신러닝(개정 2판)’ 사이킷런 1.2.1에서 재실행 완료

<파이썬 라이브러리를 활용한 머신러닝(개정 2판)>의 코드를 사이킷런 1.2.1 버전에서 재실행하여 깃허브에 업데이트했습니다.

주요 수정 사항은 다음과 같습니다. 사이킷런 1.2 버전에서 load_boston() 함수가 삭제되었기 때문에 대신 보스턴 주택 데이터셋을 직접 다운로드 하도록 수정합니다. 넘파이 1.20 버전에서 np.bool이 deprecated 되었기 때문에 대신 bool을 사용합니다.

맷플롯립 3.4.0 버전에서 _rebuild() 메서드가 사라졌기 때문에 대신 3.2.0 버전에서 추가된 addfont() 메서드를 사용하여 한글 폰트를 추가하도록 수정합니다. 또 imshow() 함수에서 vmin, vmax 매개변수를 삭제했습니다.

감사합니다!

“파이썬 라이브러리를 활용한 머신러닝” 사이킷런 1.1 버전 업데이트

최근 릴리스된 사이킷런 1.1.x 버전에서 변경된 부분에 맞춰 <(번역개정2판) 파이썬 라이브러리를 활용한 머신러닝>의 본문 내용을 다음과 같이 업데이트합니다!

  1. (p102) 사이킷런 1.3 버전부터 SGDClassifier의 loss 매개변수 중 로지스틱 손실을 의미하는 'log'가 'log_loss'로 바뀔 예정이므로 첫 번째 줄에서 “훈련합니다.”를 “훈련합니다(1.3 버전에서 'log'가 'log_loss'로 바뀔 예정입니다).“로 수정합니다.
  2. RandomForestClassifier와 ExtraTreesClassifier의 max_features 매개변수 기본값이 'auto'에서 'sqrt'로 바뀔 예정이므로,
    • (p127) 주석 47번을 다음과 같이 바꿉니다. “RandomForestClassifier의 max_features 기본값이 'auto'로 sqrt(n_features)를 의미합니다. 1.3 버전에서는 max_features 기본값이 'auto'에서 'sqrt'로 바뀔 예정입니다.
    • (p143) 표 2-2에서 랜덤포레스트와 엑스트라트리의 ‘특성 개수’ 항목을 다음과 같이 수정합니다.
      분류: max_features=’auto’ (1.3 버전에서 ‘sqrt’로 변경예정)
      회귀: 전체 특성
    • (p315) 주석 20번에서 “랜덤 포레스트의 기본값은 "auto"로 특성 개수의 제곱근을 나타내며, … 하지만 max_features="auto"로 설정하면…”을 “랜덤 포레스트 분류기는 기본적으로 특성 개수의 제곱근을 사용하며, … 하지만 max_features="sqrt"로 설정하면…”로 수정합니다.
  3. GradientBoostingClassifier의 loss 매개변수 기본값이 1.3 버전에서 'deviance'에서 'log_loss'로 바뀔 예정이므로
    • (p128) 주석 50번 네 번째 줄에서 “손실을 의미하는 'deviance'입니다.”를 “손실을 의미하는 'deviance'입니다(1.3 버전에서 'deviance'가 'log_loss'로 바뀔 예정입니다).”로 수정합니다.
    • (p143) 표 2-2의 그레이디언트 부스팅의 ‘손실 함수’ 항목에서 “(로지스틱 회귀)”를 “(로지스틱 손실. 1.3 버전에서 'log_loss'로 바뀔 예정)”으로 수정합니다.
  4. (p143) HistGradientBoostingClassifier의 loss 매개변수 기본값이 1.3 버전에서 'auto'에서 'log_loss'로 바뀔 예정이므로 표 2-2의 히스토그램 기반 부스팅의 ‘손실 함수’ 항목에서 “(이진분류는 'binary_crossentropy', 다중 분류는 'categorical_crossentropy')”을 “(로지스틱 손실. 1.3 버전에서 'log_loss'로 바뀔 예정)”로 수정합니다.
  5. (p297) 버전 1.1에서 OneHotEncoder 클래스에 자주 등장하지 않는 범주를 하나로 묶어주는 min_frequency와 max_categories 매개변수가 추가 되었습니다. 4.2절 아래 세 번째 줄에서 “OneHotEncoder 클래스에 구현되어 있습니다.”를 “OneHotEncoder 클래스에 구현되어 있습니다.<주석>옮긴이_ 버전 1.1에서 추가된 min_frequency 매개변수를 사용하면 특정 횟수 또는 비율 보다 적게 등장하는 범주를 하나의 특성으로 합칠 수 있습니다. 또한 max_categories 매개변수를 사용하여 원-핫 인코딩으로 만들어지는 특성의 개수를 제한할 수 있습니다.</주석>“로 수정합니다.

감사합니다! 🙂

XGBoost 1.6 버전 릴리즈와 [XGBoost와 사이킷런을 활용한 그레이디언트 부스팅] 업데이트 안내

지난 달에 XGBoost 1.6 버전이 릴리스되었습니다. 무엇보다도 이번에 범주형 변수에 대한 지원이 확대된 것이 눈에 띱니다. 1.5버전에서 'gpu_hist'만 범주형 변수를 지원했는데 1.6 버전에서는 'hist', 'approx'에서도 범주형 변수를 지원합니다. 또 LightGBM처럼 원-핫 인코딩을 위한 범주 개수의 임곗값을 지정하는 max_cat_to_onehot 매개변수가 추가되었습니다. 기본값은 4입니다.

또한 다중 출력 모델을 지원하고, 'approx' 트리 메서드를 'hist'를 기반으로 재작성했으며, 모델 저장을 위해 UBJSON 포맷을 지원합니다. 이외에도 많은 기능이 추가, 개선되었습니다. 자세한 내용은 XGboost 릴리스 노트를 참고하세요.

<XGBoost와 사이킷런을 활용한 그레이디언트 부스팅>의 깃허브 코드는 사이킷런 1.1과 XGBoost 1.6에서 모두 테스트되었습니다.

다음은 두 라이브러리의 버전 변경으로 인해 수정할 내용입니다.

  1. (노트: 2022년 5월 현재 코랩의 파이썬 버전은 3.7.x로 사이킷런 1.0.x만 설치됩니다. 코랩을 사용하는 경우 이 항목의 수정 사항을 무시하세요) 사이킷런 1.1 버전에 따른 변경 사항
    • (p95, p96) DecisionTreeClassifier와 DecisionTreeRegressorExtraTreeClassifierExtraTreeRegressorRandomForestClassifierRandomForestRegressorExtraTreesClassifierExtraTreesRegressor의 max_features 매개변수 중 'auto'가 'sqrt'와 동일합니다. 1.3 버전에서 'auto'가 삭제된다는 deprecated 경고가 발생하므로 'auto'를 'sqrt'로 변경합니다.
      (p95) 위에서 9번째 줄, (p96) 위에서 3번째 줄, (p119) 아래에서 6번째 줄, (p120) 위에서 7번째 줄과 아래에서 9번째 줄, (p121) 위에서 4번째 줄과 아래에서 12번째 줄.
  2. XGBoost 1.6 버전에 따른 변경 사항
    • 1.6 버전에서 use_label_encoder 매개변수 기본값이 True에서 False로 변경되었습니다. 따라서 타깃 레이블을 0부터 인코딩해야 합니다.
      (p149) 위에서 13번째 줄에서 y = df.iloc[:,0]을 y = df.iloc[:,0] - 1로 수정합니다.
      (p221) 위에서 3번째 줄에서 y = df.iloc[:,0]을 y = df.iloc[:,0] - 1로 수정합니다.
      (p232) 위에서 8번째 줄에서 “recall_score() 함수를 호출하려면 y_testy_pred와 함께 pos_label=2로 지정해야 합니다”를 “recall_score() 함수를 호출하려면 y_test와 y_pred를 전달해야 합니다”로 수정합니다. 그 아래 recall_score() 함수 호출에서 pos_label=2를 삭제합니다.
      (p233) 아래에서 7번째 줄에서 y = df.iloc[:,0]을 y = df.iloc[:,0] - 1로 수정합니다. 아래에서 1번째 줄에서 pos_label=2를 삭제합니다.
      (p237) 위에서 2번째 줄에서 df_train[df_train['LABEL']==2].values를 df_train[df_train['LABEL']==1].values로 수정합니다. 아래에서 1번째 줄에서 pos_label=2를 삭제합니다.
    • (p352) 1.6 버전에서 범주형 변수에 대한 지원이 추가되었습니다. 두 번째 문단 끝에 “1.6버전에서는 'approx'와 'hist'에서도 범주형 변수를 지원합니다.”를 추가합니다.

[파이썬 라이브러리를 활용한 머신러닝] 독자 리뷰를 소개합니다!

현업 데이터 분석가이신 송진영 님이 <파이썬 라이브러리를 활용한 머신러닝(번역개정2판)>을 읽고 블로그에 쓰신 리뷰를 소개해 드립니다.

https://ugong2san.tistory.com/4115

책 리뷰는 물론 중요한 문단을 요약해 놓아서 한 눈에 전체 책을 둘러보는데 도움이 되실거에요! 좋은 리뷰 정말 감사합니다!

[혼자 공부하는 머신러닝+딥러닝] 사이킷런 1.1.0 버전 업데이트 안내

<혼자 공부하는 머신러닝+딥러닝>의 주피터 노트북 코드를 사이킷런 1.1.0 버전에 맞추어 모두 테스트했습니다.

(노트: 2022년 5월 현재 코랩의 파이썬 버전은 3.7.x로 사이킷런 1.0.x만 설치됩니다. 코랩을 사용하는 경우 아래 수정 사항을 무시하세요)

사이킷런 1.1.0 버전에서 SGDClassifier의 loss 매개변수 중 로지스틱 손실을 의미하는 'log'가 'log_loss'로 바뀐다는 경고가 발생합니다. 사이킷런 1.1.0 버전 이상을 사용하는 경우 경고를 피하기 위해 다음과 같이 변경해 주세요.

  • (p208) 두 번째 손코딩, (p210) 첫 번째 손코딩, (p211) 두 번째 손코딩에서 loss='log'를 loss='log_loss'로 바꿉니다.
  • (p214) 위에서 11번째 줄과 20번째 줄, (p215) 5번째 줄에서 loss='log'를 loss='log_loss'로 바꿉니다.
  • (p345) 세 번째 손코딩, (p362) 위에서 15번째 줄에서 loss='log'를 loss='log_loss'로 바꿉니다.

감사합니다!

사이킷런 1.1 버전이 릴리즈되었습니다!

사이킷런 1.1 버전이 릴리즈되었습니다. 주요 변경 사항은 다음과 같습니다.

  • HistGradientBoostingRegressor의 손실 함수에 quantile이 추가되었습니다.
  • neighbors, decomposition, impute 모듈 등을 포함하여 이제 모든 변환기에 get_feature_names_out 메서드가 추가되어 본격적으로 데이터프레임을 훈련 데이터로 사용할 수 있습니다.
  • OneHotEncoder 클래스에 자주 등장하지 않은 범주를 하나로 묶어주는 min_frequencymax_categories 매개변수가 추가되었습니다. 자세한 내용은 가이드를 참고하세요.
  • 거리 계산 루틴이 리팩토링되어 최근접 이웃 알고리즘 등의 속도가 크게 향상되었습니다.
  • NMF의 온라인 학습 버전인 MiniBatchNMF 클래스가 추가되었습니다.
  • KMeans 알고리즘의 계층 군집 버전인 BisectingKMeans 클래스가 추가되었습니다.

이 외에도 많은 기능이 추가되고 개선되었습니다. 자세한 내용은 사이킷런 1.1 버전의 릴리스 노트를 참고하세요!

“XGBoost와 사이킷런을 활용한 그레이디언트 부스팅”이 출간되었습니다!

최고의 그레이디언트 부스팅 라이브러리 중 하나인 XGBoost를 다룬 <XGBoost와 사이킷런을 활용한 그레이디언트 부스팅> 책이 출간되었습니다!

그레디이디언트 부스팅 알고리즘을 소개하는 것 외에도 XGBoost와 사이킷런의 그레이디언트 부스팅 모델의 다양한 옵션을 소개하고 튜닝하는 방법을 설명합니다.

번역서에는 인기가 많은 또 다른 그레이디언트 부스팅 라이브러리인 LightGBM과 CatBoost, 그리고 사이킷런에 최근에 추가된 히스토그램 기반 부스팅도 부록으로 추가했습니다! 즐거운 부스팅 생활을 위하여! 🙂

  • 온라인/오프라인 서점에서 판매중입니다. [Yes24], [교보문고], [한빛미디어]
  • 380페이지, 풀컬러: 34,000원 –> 30,600원, 전자책 27,200원
  • 이 책에 실린 코드는 깃허브에 있습니다.