파이썬 머신러닝 완벽 가이드

F1 스코어
F1 스코어의 공식

사이킷런은 F1 스코어를 구하기 위해 f1_score() API를 제공
이를 이용해 앞 게시글에서의 예제였던 타이타닉 생존자 모델의 F1 스코어를 구해보자
from sklearn.metrics import f1_score
f1 = f1_score(y_test, pred)
print('F1 스코어:{0:.4f}'.format(f1))
[output]
F1 스코어:0.7966
타이타닉 생존자 예측에서 임곗값을 변화시키면서 F1 스코어를 포함한 평가 지표를 구해보자
이를 위해 앞에서 작성한 get_clf_eval 함수에 F1스코어를 구하는 로직을 추가한다.
그리고 앞에서 작성한 get_eval_threshold() 함수를 이용해 임곗값 0.4~0.6별로 정확도, 정밀도, 재현율, F1스코어를 알아보자
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 = Ir_clf.predict_proba(X_test)
get_eval_by_threshold(y_test, pred_proba[:,1].reshape(-1,1), thresholds)
[output]
임곗값: 0.4
오차 행렬
[[97 21]
[11 50]]
정확도:0.8212, 정밀도:0.7042, 재현율:0.8197,F1:0.7576
임곗값: 0.45
오차 행렬
[[105 13]
[ 13 48]]
정확도:0.8547, 정밀도:0.7869, 재현율:0.7869,F1:0.7869
임곗값: 0.5
오차 행렬
[[108 10]
[ 14 47]]
정확도:0.8659, 정밀도:0.8246, 재현율:0.7705,F1:0.7966
임곗값: 0.55
오차 행렬
[[111 7]
[ 16 45]]
정확도:0.8715, 정밀도:0.8654, 재현율:0.7377,F1:0.7965
임곗값: 0.6
오차 행렬
[[113 5]
[ 17 44]]
정확도:0.8771, 정밀도:0.8980, 재현율:0.7213,F1:0.8000
F1 스코어는 임곗값이 0.6일 때 가장 좋은 값을 보여준다.