본문 바로가기
python

오류 해결 코드 (ROC_AUC_score) python

by signature95 2022. 4. 18.
728x90
반응형

로지스틱 회귀분석을 시행하고 나서 Accuracy, AUC_ROC 값을 도출하려는 중에 이런 에러 메세지가 발생했습니다.

 

import statsmodels.api as sm
from sklearn.metrics import accuracy_score, roc_auc_score

logreg = sm.Logit(Y_train, X_train).fit()

# 로지스틱 회귀 모델 생성 및 학습
pred = logreg.predict(X_train)

# 성능 평가
print('Accuacy Score: ', accuracy_score(Y_train, pred))
print('ROC AUC Score: ', roc_auc_score(Y_train, pred))

결과 값 (에러)

Classification metrics can't handle a mix of binary and continuous targets

 

문제는 pred의 출력 값이 binary 타입(Y_train의 데이터 타입)이 아니라 float형태의 데이터라 정확도를 측정할 수 없는 것이었는데요.

 

이를 해결하기 위해서는 임계치를 설정하고 0, 1의 값으로 pred를 재분류 해야 했습니다.

 

따라서 이를 수정하기 위한 코드는 다음과 같습니다.

import statsmodels.api as sm
from sklearn.metrics import accuracy_score, roc_auc_score

logreg = sm.Logit(Y_train, X_train).fit()

# 로지스틱 회귀 모델 생성 및 학습
pred = logreg.predict(X_train)
pred_binary = np.where(pred > 0.5, 1 , 0)

# 성능 평가
print('Accuacy Score: ', accuracy_score(Y_train, pred_binary))
print('ROC AUC Score: ', roc_auc_score(Y_train, pred_binary))

>>>

Accuacy Score:  0.796400449943757
ROC AUC Score:  0.77357227043823

 

728x90

'python' 카테고리의 다른 글

pip install 오류 (python)  (0) 2022.03.06
가상환경 만들기 (Mac)  (0) 2021.11.15
VScode 설치 및 확장팩  (0) 2021.11.14
티스토리 시작에 앞서  (0) 2021.11.14

댓글