python
오류 해결 코드 (ROC_AUC_score) python
signature95
2022. 4. 18. 16:57
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