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 |
댓글