반응형
오차행렬
- 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 계산 메소드
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
[scikit-learn 라이브러리] 특이값분해 (SVD) (2) | 2020.09.01 |
---|---|
[scikit-learn 라이브러리] 특성 자동 선택 (0) | 2020.09.01 |
[scikit-learn 라이브러리] 그리드서치 (0) | 2020.09.01 |
Pandas 데이터프레임 출력양 조절 (0) | 2020.08.24 |
[scikit-learn 라이브러리] 교차 검증 (0) | 2020.08.23 |