728x90
반응형
# 평가 지표
-회귀
- 평균 오차
-분류
- 정확도
- 오차행렬
- 정밀도
- 재현율
- F1스코어
- ROC AUC
4. F1 스코어
정밀도와 재현율을 결합한 지표. F1 스코어는 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가짐.
ex) A : 정밀도0.9 재현율0.1
B: 정밀도 0.5 재현율 0.5
이 경우 F1 스코어는 A:0.18 / B: 0.5 로 B가 더 높다.
from sklearn.metrics import f1_score
f1 = f1_score(y_test , pred)
print('F1 스코어: {0:.4f}'.format(f1))
F1 스코어: 0.7805
def get_clf_eval(y_test , pred):
confusion = confusion_matrix( y_test, pred)
accuracy = accuracy_score(y_test , pred)
precision = precision_score(y_test , pred)
recall = recall_score(y_test , pred)
# F1 스코어 추가
f1 = f1_score(y_test,pred)
print('오차 행렬')
print(confusion)
# f1 score print 추가
print('정확도: {0:.4f}, 정밀도: {1:.4f}, 재현율: {2:.4f}, F1:{3:.4f}'.format(accuracy, precision, recall, f1))
thresholds = [0.4 , 0.45 , 0.50 , 0.55 , 0.60]
pred_proba = lr_clf.predict_proba(X_test)
get_eval_by_threshold(y_test, pred_proba[:,1].reshape(-1,1), thresholds)
임곗값: 0.4
오차 행렬
[[99 19]
[10 51]]
정확도: 0.8380, 정밀도: 0.7286, 재현율: 0.8361, F1:0.7786
임곗값: 0.45
오차 행렬
[[103 15]
[ 12 49]]
정확도: 0.8492, 정밀도: 0.7656, 재현율: 0.8033, F1:0.7840
임곗값: 0.5
오차 행렬
[[104 14]
[ 13 48]]
정확도: 0.8492, 정밀도: 0.7742, 재현율: 0.7869, F1:0.7805
임곗값: 0.55
오차 행렬
[[109 9]
[ 15 46]]
정확도: 0.8659, 정밀도: 0.8364, 재현율: 0.7541, F1:0.7931
임곗값: 0.6
오차 행렬
[[112 6]
[ 16 45]]
정확도: 0.8771, 정밀도: 0.8824, 재현율: 0.7377, F1:0.8036
=> 임계값이 0.6 일때 F1스코어가 가장 좋은 값을 보여준다.
5. AUC와 ROC곡선
이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표
- ROC : 모든 임계값에서 분류 모델의 성능을 보여주는 그래프
- AUC: ROC 곡선 아래 영역
ROC 곡선은 FPR(1 - 특이성 = X축)이 변할 때 TPR(재현율,민감도 = Y축)이 어떻게 변하는지를 나타내는 곡선이다.
ROC 곡선이 직선에 가까울 때 성능이 떨어지는 것, 멀어질수록 성능이 뛰어난 것.
728x90
반응형
'pythonML' 카테고리의 다른 글
[pythonML] 회귀- 다항회귀 (0) | 2022.07.16 |
---|---|
[pythonML] 부스팅(Boosting)-LGBM(Light Gradient Boost Machine) (0) | 2022.07.15 |
[pythonML] 정밀도와 재현율 - 평가 (0) | 2022.07.11 |
[pythonML] 정확도와 오차행렬 - 평가 (0) | 2022.07.10 |
[pythonML] 회귀- LinearRegression (0) | 2022.05.09 |