🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    자격증 (데이터 사이언스)

  • 해결 여부

    해결됨

머신러닝 학습중에 결과값이 다르게 나옴+ROC_AUC스코어 오류

24.05.24 18:12 작성 24.05.24 18:25 수정 조회수 100

0

안녕하세요! 머신러닝 학습 중에 DT,RF,XGBOOST 모두 선생님이 하신 것과 동일하게 코드 작성하고 실행했는데 모두 결과값이 다르게 나와서요. 제가 무언가를 잘못 한 걸까요??

이게 DT랑 RF는 결과값이 똑같이 나왔습니다.

from sklearn.ensemble import RandomForestClassifier 
rf = RandomForestClassifier()
rf.fit(X_tr[cols], y_tr)
pred = rf.predict_proba(X_val[cols])
pred[:10]
array([[1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.]])

이게 XGB입니다.

from xgboost import XGBClassifier 
xgb = XGBClassifier()
xgb.fit(X_tr[cols], y_tr)
pred = xgb.predict_proba(X_val[cols])
pred[:10]
array([[9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05],
       [9.999634e-01, 3.657642e-05]], dtype=float32)

그리고 이 예측데이터로 roc_auc 스코어를 뽑아내려고 하니 이런 오류가 뜨면서 안된다고 해서요. 무엇이 문제인지 궁금합니다ㅠㅠ

from sklearn.metrics import roc_auc_score
roc_auc_score(y_val,pred[:,1])

/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_ranking.py in _binary_roc_auc_score(y_true, y_score, sample_weight, max_fpr)
    337     """Binary roc auc score."""
    338     if len(np.unique(y_true)) != 2:
--> 339         raise ValueError(
    340             "Only one class present in y_true. ROC AUC score "
    341             "is not defined in that case."

ValueError: Only one class present in y_true. ROC AUC score is not defined in that case.

 

답변 1

답변을 작성해보세요.

0

안녕하세요:) 코드 전처리에서 어떻게 전처리 하고 데이터를 나누었는지 보여주실래요?

아마도 전처리가 잘못된 것 같아요

아래 에러는 클래스가 1개 밖에 없어서 나는 에러로 보입니다.

채널톡 아이콘