[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[scikit-learn 라이브러리] 오차행렬

inu 2020. 9. 1. 12:39
반응형

오차행렬

  • TN : 예측값을 Negative 값 0으로 예측했고 실제 값은 역시 Negative 값 0
  • FP : 예측값을 Positive 값 1로 예측 했는데 실제 값은 Negative 값 0
  • FN : 예측값을 Negative 값 0으로 예측했는데, 실제 값은 Positive 값 1
  • TP : 예측값을 Positive 값 1로 예측했는데 실제 값 역시 Positive 값 1
  • 학습에 사용된 분류모델이 얼마나 혼란스러워하고 있는지 판단 할 수 있는 지표

confusion_matrix()

confusion_matrix(y_true, y_pred)
  • y_true : 정답
  • y_pred : 예측 결과

사용 예시

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits

digits = load_digits()  # 손글씨 데이터
y = digits.target == 9  # 불균형 데이터셋 생성

X_train, X_test, y_train, y_test = train_test_split(digits.data, y, random_state=0)
# LogisticRegression
from sklearn.linear_model import LogisticRegression

model_lr = LogisticRegression(C=0.1, max_iter=1000).fit(X_train, y_train)
pred_lr = model_lr.predict(X_test)
model_lr.score(X_test, y_test)
==결과==
0.98
  • 단순 스코어 : 0.98
# 오차 행렬
from sklearn.metrics import confusion_matrix

confusion = confusion_matrix(y_test, pred_lr)
print("오차 행렬:\n", confusion)
==결과==
오차 행렬:
 [[402   1]
 [  6  41]]
  • TN : 402 / FP : 1 / FN : 6 / TP : 41

정밀도, 재현율, F1 스코어

  • 정밀도 : TP / (TP+FP)
  • 재현율 : TP / (TP+FN)
  • F1 스코어 : 2*정밀도*재현율 / 정밀도*재현율
  • 이들 모두를 한번에 알 수 있는 classification_report() 메소드도 사이킷런에 존재함

ROC, AUC

  • ROC(Receiver Operating Characteristic) : 여러 임계값에서 분류기의 특성을 분석하는데 널리 사용되는 도구
  • ROC 곡선은 분류기의 거짓 양성 비율 (FPR)이 변할 때 진짜 양성 비율 (TPR)이 어떻게 변하는지를 나타내는 곡선
  • 진짜 양성비율 : 재현율
  • 가짜 양성비율 : 전체 음성 샘플 중에서 거짓 양성으로 잘못 분류한 비율 (FPR = FP / (FP+TN))
  • AUC(Area Under the Curve) : ROC 곡선 아래의 면적값
  • roc_curve() : ROC 곡선을 그리는 메소드
  • roc_auc_score() : AUC 계산 메소드
반응형