본문 바로가기
Data Science/Modeling

[분류 모델 평가] - sklearn.metrics.roc_curve & roc_auc_score

by Finn# 2022. 11. 30.
728x90

roc_curve 

 roc_curve를 그리기 위해서는 roc_curve의 x,y값을 받아와야하는데, 이는 sklearn.matrics.roc_curve()함수에서 제공하고 있다. g해당 함수의 return값은  거짓긍정률(1 - 특이도)참긍정률(재현율) , 임계값(Thresholds) 이 같은 순서로 출력되는 이를 Unpacking하면 해당 함수의 return값을 각각 지정해준 변수에 받아올 수 있다.

from sklearn.metrics import roc_curve
FPRs, TPRs, Thresholds = roc_curve(Test Data, Pred Data)

roc_curve ;  visualization

 데이터 분석의 꽃은 시각화이기 때문에 roc_curve를 시각화해서 표현해볼 것이다. 이번에는 한 개의 모델에 대해서 시각화 하는 예시를 담았다. 하지만 실제로 train data에 대해서 여러가지 모델을 학습시킨 후 각 모델 별로 성능을 비교한다고 가정하면 어떤 모델이  auc가 가장 넓은지 파악할 때 시각화하는 것이 많은 도움이 될 것이다. 

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve
FPRs, TPRs, Thresholds = roc_curve(Test Data, Pred Data)

# 그래프 
plt.plot(FPRs, TPRs, label = 'ROC')
plt.plot([0,1],[0,1], '--', label = '0.5')
plt.legend() # 범례 출력

# x,y축 이름
plt.xlabel("FPR") # 1 - Sensitivity
plt.ylabel("TPR") # Recall

# x,y축 범위
plt.xlim(0,1)
plt.ylim(0,1)

# 그래프 출력
plt.show()

roc_auc_score

 이제 학습시킨 모델의 roc_curve 의 아래면적 즉, auc를 score형태로 알아보기 위해선 아래와 같은 함수를 사용하면 편리하다.

from sklearn.metrics import roc_auc_score
roc_score = roc_auc_score( Test Data, Pred Data )
print(roc_score)

 

인스타 주소 🎗

https://www.instagram.com/f.inn_sharp/

반응형