본문 바로가기
AI & 머신러닝 coding skill

머신러닝 분류 - 정확도(accuracy), 정밀도(precision), 재현율(recall)

by 호빵님 2022. 5. 24.
반응형

정확도(accuracy), 정밀도(precision), 재현율(recall)

이번 실습에서는 간단한 분류 결과 확인 및 비교를 통해 분류 알고리즘 평가 지표인 정확도, 정밀도, 재현율 결과를 직접 계산해보겠습니다.

 

실습

10명의 친구들이 모여서 ‘마피아 게임’을 진행하려고 합니다. 게임의 룰은 마피아의 수가 시민 수보다 적어야 하며, 숫자는 정해지지 않았기 때문에 마피아의 수를 생각하고 정확히 마피아를 찾아서 없애야 게임에서 승리할 수 있습니다. 추리를 통해 예측된 결과와 실제 값을 비교하여 혼동행렬을 출력해보고, 결과를 분석해 보겠습니다.

  1. 실행 버튼을 클릭하여 마피아(mafia)와 시민(not mafia)으로 분류된 혼동 행렬을 확인합니다.
  2. 실행 결과값을 토대로 마피아를 제대로 분석했는지에 대한 accuracy, precision, recall을 계산하여, 각각 변수에 저장합니다.

 

 

import pandas as pd

def main():
    # 실제 값
    y_true = pd.Series(
        ["not mafia", "not mafia", "mafia", "not mafia", "mafia", 
        "not mafia", "not mafia", "mafia", "not mafia", "not mafia"]
        )
    # 예측된 값
    y_pred = pd.Series(
        ["mafia", "mafia", "not mafia", "not mafia", "mafia", 
        "not mafia", "not mafia", "mafia", "not mafia", "not mafia"]
        )
    
    print("1. 혼동 행렬 :\n",pd.crosstab(y_true, y_pred, rownames=['실제'], colnames=['예측'], margins=True))
    
    
    """
    1. 실행 버튼을 클릭하여 
       마피아(mafia)와 시민(not mafia)으로 분류된 혼동 행렬을 확인합니다.
    """
    
    """
    2. 실행 결과값을 토대로 
       마피아를 제대로 분석했는 지에 대한 
       accuracy, precision, recall을 구합니다.
    """
    accuracy = (2+5)/10
    
    precision = 2/4
    
    recall = 2/3
    
    print("\naccuracy : ", accuracy)
    print("precision : ", precision)
    print("recall : ", recall)
    
    return accuracy, precision, recall
    
if __name__ == "__main__":
    main()

 

*본 포스팅은 DX기업교육 플랫폼인 Elice academy의 머신러닝 심화 과정에서 실습한 코드를 이용해서 작성되었습니다.

https://elice.io/

 
 
 

올인원 디지털 교육 플랫폼 - 엘리스

우리 모두를 위한 교실, 엘리스와 함께 더 나은 기회를 만들어보세요

elice.io

 

 

반응형