채널톡 아이콘

인프런 커뮤니티 질문&답변

김상원님의 프로필 이미지

작성한 질문수 2

[개정판] 파이썬 머신러닝 완벽 가이드

XGBoost early stopping

작성

·

57

·

수정됨

0

수업 중 다룬, 책에도 있는 코드가 실행시 오류 나는 데, 해결이 쉽지 않습니다.
(원본 미변경)

KakaoTalk_Photo_2025-04-18-13-20-18.png.webp

 

  • 사진에서는 잘렸는데, early stopping이 wrapper_fit에서 적용 불가해서 오류가 발생합니다.

  • 실행해본 해결법

    • xgboost 라이브러리 다운그레이드시(사용하셨던 1.5등), 넘파이 판다스 추가 다운그레이드로 라이브러리간 충돌이 일어납니다.

       

    • 참고 - 로컬에서도 마찬가지 방식으로 오류가 발생합니다.

    • xgboost 라이브러리 현재 버전은 3.0입니다.

  • 동일한 내용을 실습 가능한 대체 코드 공유해 주시면 감사하겠습니다 🙂

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

오류 내용이 다 보이지 않습니다. 캡처 하지 마시고, 오류 내용을 텍스트로 여기에 올려봐 주십시요.

그리고 현재 커널에서 xgboost의 버전, numpy 버전, pandas 버전을 다 올려 주십시요.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김상원님.

XGBoost 사용 시 early_stopping_rounds 관련 오류는 버전 차이에서 비롯되는 경우가 많습니다. XGBoost의 최신 버전에서는 early_stopping_roundseval_metric을 초기화 시점에 직접 설정하는 방식을 사용합니다. 이와 관련된 유사한 질문과 그 해결방법에 대한 기존 답변들이 있어 아래에 안내드립니다.

비슷한 오류와 관련된 해결책 링크:

  1. early_stopping_rounds,eval_metric 오류 관련 질문있습니다.

    • 핵심 내용: 최신 버전에서 early_stopping_rounds는 fit 메서드가 아닌 XGBClassifier 초기화 시에 설정하는 것이 필요합니다. 강사님께서 버전 다운그레이드를 제안하셨습니다.
  2. XGBoost 2.1.3 최신버전 사이킷런 XGboost

    • 핵심 내용: 최신 XGBoost 버전의 파라미터 변경에 대해 다른 수강생분께서 알려주신 사례로, 새로운 방식의 코드 예시를 제공하고 있습니다.

정리된 해결 방안:

최신 XGBoost 사용에 따른 코드 변경 사항은 다음과 같습니다:

from xgboost import XGBClassifier

xgb_wrapper = XGBClassifier(n_estimators=400, 
                            learning_rate=0.05, 
                            max_depth=3, 
                            early_stopping_rounds=50, 
                            eval_metric="logloss")

evals = [(X_tr, y_tr), (X_val, y_val)]

xgb_wrapper.fit(X_tr, y_tr, eval_set=evals, verbose=True)
  • 위 코드는 최신 XGBoost 버전에서의 사용법으로, 초기화 시점에 early_stopping_roundseval_metric을 설정하여 문제를 해결합니다.

질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.