머신러닝(파이썬) - ROC Curve

LSH·2023년 7월 21일
0

교육 정보

  • 교육 명: 경기미래기술학교 AI 교육
  • 교육 기간: 2023.05.08 ~ 2023.10.31
  • 오늘의 커리큘럼:
    머신러닝
    (7/17 ~ 7/28)
  • 강사: 이현주, 이애리 강사님
  • 강의 계획:
    1. 머신러닝

ROC Curve

Logistic Regression

  • 이름과는 달리 회귀 알고리즘이 아닌 분류 알고리즘
  • 입력 데이터를 해당 클래스 레이블(예: 0 또는 1)에 할당하는 확률을 예측하는 분류 알고리즘 (특히 이진분류에 자주 사용)
  • 확률값은 0에서 1 사이이며 임계값(threshold)를 설정하여 클래스를 구분
  • 선형 회귀와 비슷하지만 확률값을 얻기위해 로지스틱 함수를 사용

ROC (Receiver operating characteristic)

from sklearn.linear_model import LogisticRegression

#모델 생성 및 초기화
logmodel = LogisticRegression()
#학습
logmodel.fit(X_train, y_train)

# ROC 커브
from sklearn.metrics import roc_auc_score

# 확률
y_train_pred_proba = logmodel.predict_proba(X_train)[:,1]
y_test_pred_proba = logmodel.predict_proba(X_test)[:,1]
roc_score_train = roc_auc_score(y_train, y_train_pred_proba)
roc_score_test = roc_auc_score(y_test, y_test_pred_proba)
print("roc_score_train :", roc_score_train)
print("roc_score_test :", roc_score_test)

from sklearn.metrics import roc_curve

def roc_curve_plot(y_test , pred_proba_c1):
  fprs , tprs , thresholds = roc_curve(y_test , pred_proba_c1)
  # ROC Curve
  plt.plot(fprs , tprs, label='ROC')
  # 가운데 대각선
  plt.plot([0, 1], [0, 1], 'k--', label='Random', color='red')
  # FPR X 축의 Scale을 0.1 단위로 변경, X축, Y축 레이블 설정
  start, end = plt.xlim(); plt.xticks(np.round(np.arange(start, end, 0.1),2))
  plt.xlim(0,1); plt.ylim(0,1)
  plt.xlabel('FPR( 1 - Sensitivity )');  plt.ylabel('TPR( Recall )')
  plt.legend();  plt.show()
  
#학습 데이터의 ROC 커브
roc_curve_plot(y_train , y_train_pred_proba)

#테스트 데이터의 ROC 커브
roc_curve_plot(y_test , y_test_pred_proba)

  • predict_proba
    : [클래스가 3개인 문제를 풀 경우]
    출력값 [클래스 0일 확률, 클래스 1일 확률, 클래스 2일 확률]
profile
:D

0개의 댓글