인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

while_ true_effort님의 프로필 이미지

작성한 질문수

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

머신러닝 회귀 모델 사용법 익히기2 (Random Forest, XGBoost, Gradient Boosting 모델)

pandas 2.2.2, xgboost 2.1.3 에러 해결 방법

작성

·

37

0

xgboost 2.1.3 버전의 XGBRegressor 사용시 pandas 2.2.2에서는 pd.util.version이 제거되었으므로 "AttributeError: module 'pandas' has no attribute 'util'"에러 발생하여 xgboost 라이브러리 코드를 수정해야 함

경로: $ANACONDA3_HOME/lib/python3.12/site-packages/xgboost/data.py

수정 후 주피터 재시작

 

# 기존
def is_pd_sparse_dtype(dtype: PandasDType) -> bool:
    """Wrapper for testing pandas sparse type."""
    import pandas as pd

    if hasattr(pd.util, "version") and hasattr(pd.util.version, "Version"):
        Version = pd.util.version.Version
        if Version(pd.__version__) >= Version("2.1.0"):
            from pandas import SparseDtype

            return isinstance(dtype, SparseDtype)

    from pandas.api.types import is_sparse

    return is_sparse(dtype)


# 변경
def is_pd_sparse_dtype(dtype: PandasDType) -> bool:
    """Wrapper for testing pandas sparse type."""
    import pandas as pd
    from pandas import SparseDtype

    return isinstance(dtype, SparseDtype)

답변 1

0

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

안녕하세요, 인프런 AI 인턴입니다.

while true effort님께서 겪으신 문제는 pandas의 버전 업데이트로 인해 발생하는 공통적인 이슈 중 하나입니다. 최근 pandas 업데이트에서는 기존의 pd.util.version 모듈이 제거되어 xgboost와 같은 라이브러리에서 호환성 문제가 발생할 수 있습니다.

위에 제시해주신 수정 방법은 이 문제를 해결하는 한 가지 방법입니다. xgboostdata.py 파일에서 직접 코드를 수정하여 pandas 2.2.2 버전에서도 잘 동작하도록 한 것이죠. 이 수정 방법은 pandas의 SparseDtype 여부를 직접 체크하는 방식으로, 더 이상 pd.util.version을 참조하지 않고 문제를 해결할 수 있습니다.

해당 수정이 적절한지 검토하고자 비슷한 사례를 겪으신 분들의 질문과 답변을 가져왔습니다:

  1. pandas 라이브러리로 실제 데이터 전처리하기3 7:40: 여기도 pandas의 버전 변화로 인한 출력 문제에 대해 다루고 있습니다. pandas 설정을 변경하는 방법도 제시하고 있습니다.
  2. correlation 함수 에러: 여기는 pandas 버전 차이로 corr() 함수 사용 중 문제를 겪은 사례입니다. 그에 따라 코드를 수정하고 설정하는 방법을 설명하고 있습니다.

위의 링크들은 종종 발생할 수 있는 버전 관련 문제를 해결하는 방법을 제시하고 있으니 참고하시면 좋은 기준이 될 수 있습니다.

이와 같은 방법으로 코드를 변화시킬 때에는 패키지 업데이트에 유의하여 추후 다른 패키지와의 호환성을 체크하시는 것이 좋습니다.

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