[NLP Project] F1 Score

2022. 11. 8. 11:33·Project/캡스톤디자인2
728x90
반응형

f1score란.. 블로그에서 해당 내용에 대해 다룬 게시글이 있으므로 나중에 링크 걸어두겠다.

 

https://bestkcs1234.tistory.com/61

 

 

Tensorflow addons 을 이용한 F1 score 출력

tensorflow는 모델을 compile 할 때 다양한 metrics를 제공해준다. 다음과 같이 설정하면 매 epoch 마다 해당하는 수치들을 계산하여 출력해준다. 하지만 f1 score는 tf.metrics에서 찾아볼 수 없는데 Tensorflow a

bestkcs1234.tistory.com

 

from sklearn.metrics import classification_report,f1_score
    # f1 score
    p = model.predict(np.array(X_test))  
    print('*'*34)
    print(classification_report(np.argmax(y_test, 2).ravel(), np.argmax(p, axis=2).ravel(),labels=list(idx2ner.keys()), target_names=list(idx2ner.values())))
    print('*'*34)
              precision    recall  f1-score   support

           -       0.12      0.97      0.21    145777
       cvl_b       0.67      0.16      0.26     11495
       num_b       0.64      0.43      0.51     11032
       per_b       0.49      0.32      0.39      8497
       org_b       0.58      0.35      0.44      8114
       dat_b       0.90      0.65      0.75      5172
       loc_b       0.50      0.23      0.31      4088
       trm_b       0.80      0.23      0.36      3656
       evt_b       0.62      0.31      0.42      2242
       num_i       0.67      0.64      0.65      1800
       dat_i       0.79      0.78      0.78      1628
       anm_b       0.88      0.25      0.38      1337
       evt_i       0.55      0.38      0.45      1254
       per_i       0.56      0.02      0.05      1014
       org_i       0.43      0.21      0.28       979
       afw_b       0.61      0.15      0.24       849
       cvl_i       0.25      0.03      0.06       649
       trm_i       0.37      0.05      0.09       663
       tim_b       0.85      0.46      0.60       702
       fld_b       0.71      0.17      0.28       454
       afw_i       0.47      0.12      0.20       358
       tim_i       0.65      0.70      0.67       237
       plt_b       0.00      0.00      0.00        65
       mat_b       0.00      0.00      0.00        53
       loc_i       0.00      0.00      0.00        46
       anm_i       0.00      0.00      0.00        13
       fld_i       0.00      0.00      0.00         6
       mat_i       0.00      0.00      0.00         1
       plt_i       0.00      0.00      0.00         0
         PAD       0.00      0.00      0.00   1047819

   micro avg       0.13      0.13      0.13   1260000
   macro avg       0.44      0.25      0.28   1260000
weighted avg       0.05      0.13      0.05   1260000

micro avg 가 f1score 라고 한다...

 

수정된 함수

main.py

def model_predict(src_tokenizer,tar_tokenizer,model):
    # 예측

    idx2word = src_tokenizer.index_word
    idx2ner = tar_tokenizer.index_word
    idx2ner[0] = 'PAD'

    i = 1000
    y_predicted = model.predict(np.array([X_test[i]]))

    y_predicted = np.argmax(y_predicted, axis = -1) # 가장 높은 확률을 추출 (예측값)
    true = np.argmax(y_test[i],-1) # 실제 값
    print("{:15}|{:5}|{}".format("단어","실제값","예측값"))
    print("-"*34)

    for w, t , pred in zip(X_test[i], true, y_predicted[0]):
        if w != 0:
            print("{:17}|{:7}|{}".format(idx2word[w],idx2ner[t].upper(),idx2ner[pred].upper()))

    # f1 score
    p = model.predict(np.array(X_test))  
    print('*'*34)
    print(classification_report(np.argmax(y_test, 2).ravel(), np.argmax(p, axis=2).ravel(),labels=list(idx2ner.keys()), target_names=list(idx2ner.values())))
    print('*'*34)
728x90
반응형

'Project > 캡스톤디자인2' 카테고리의 다른 글

[NLP Project] BERT 인풋 만들기 - 1. 문장 전처리  (3) 2022.11.09
[NLP Project] 1-2. 데이터 전처리 - 특수문자 제거하기  (0) 2022.11.09
[NLP Project] LSTM + self-attention  (0) 2022.11.08
[NLP Project] input 값을 넣어 개체명 인식하기 - 오류 해결  (0) 2022.11.07
[NLP Project] 성능 기록  (0) 2022.11.06
'Project/캡스톤디자인2' 카테고리의 다른 글
  • [NLP Project] BERT 인풋 만들기 - 1. 문장 전처리
  • [NLP Project] 1-2. 데이터 전처리 - 특수문자 제거하기
  • [NLP Project] LSTM + self-attention
  • [NLP Project] input 값을 넣어 개체명 인식하기 - 오류 해결
sillon
sillon
꾸준해지려고 합니다..
    반응형
  • sillon
    sillon coding
    sillon
  • 전체
    오늘
    어제
    • menu (614)
      • notice (2)
      • python (68)
        • 자료구조 & 알고리즘 (23)
        • 라이브러리 (19)
        • 기초 (8)
        • 자동화 (14)
        • 보안 (1)
      • coding test - python (301)
        • Programmers (166)
        • 백준 (76)
        • Code Tree (22)
        • 기본기 문제 (37)
      • coding test - C++ (5)
        • Programmers (4)
        • 백준 (1)
        • 기본기문제 (0)
      • 공부정리 (5)
        • 신호처리 시스템 (0)
        • Deep learnig & Machine lear.. (41)
        • Data Science (18)
        • Computer Vision (17)
        • NLP (40)
        • Dacon (2)
        • 모두를 위한 딥러닝 (강의 정리) (4)
        • 모두의 딥러닝 (교재 정리) (9)
        • 통계 (2)
      • HCI (23)
        • Haptics (7)
        • Graphics (11)
        • Arduino (4)
      • Project (21)
        • Web Project (1)
        • App Project (1)
        • Paper Project (1)
        • 캡스톤디자인2 (17)
        • etc (1)
      • OS (10)
        • Ubuntu (9)
        • Rasberry pi (1)
      • App & Web (9)
        • Android (7)
        • javascript (2)
      • C++ (5)
        • 기초 (5)
      • Cloud & SERVER (8)
        • Git (2)
        • Docker (1)
        • DB (4)
      • Paper (7)
        • NLP Paper review (6)
      • 데이터 분석 (0)
        • GIS (0)
      • daily (2)
        • 대학원 준비 (0)
      • 영어공부 (6)
        • job interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    소수
    백준
    programmers
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sillon
[NLP Project] F1 Score
상단으로

티스토리툴바