Sklearn을 사용하여 python에서 균형 정밀도를 계산하는 방법
균형 잡힌 정확도 는 분류 모델 의 성능을 평가하는 데 사용할 수 있는 측정항목입니다.
다음과 같이 계산됩니다.
균형 정확도 = (민감도 + 특이도) / 2
금:
- 민감도 : “참 양성률” – 모델이 감지할 수 있는 양성 사례의 비율입니다.
- 특이도 : “진음성 비율” – 모델이 감지할 수 있는 부정적인 사례의 비율입니다.
이 측정항목은 두 클래스의 균형이 맞지 않을 때, 즉 한 클래스가 다른 클래스보다 훨씬 더 많이 나타날 때 특히 유용합니다.
예를 들어, 스포츠 분석가가 로지스틱 회귀 모델을 사용하여 400명의 대학 농구 선수가 NBA에 선발될지 여부를 예측한다고 가정해 보겠습니다.
다음 혼동 행렬은 모델의 예측을 요약합니다.
모델의 균형 잡힌 정확도를 계산하기 위해 먼저 민감도와 특이도를 계산합니다.
- 민감도 : ‘진양성률’ = 15 / (15 + 5) = 0.75
- 특이도 : ‘진음성률’ = 375 / (375 + 5) = 0.9868
그런 다음 균형 정밀도를 다음과 같이 계산할 수 있습니다.
- 균형 정확도 = (민감도 + 특이도) / 2
- 균형 정확도 = (0.75 + 9868) / 2
- 균형 정확도 = 0.8684
모델의 균형 정확도는 0.8684 로 나타났습니다.
다음 예에서는 Python의 sklearn 라이브러리에 있는 Balanced_accuracy_score() 함수를 사용하여 이 특정 시나리오에 대한 균형 정확도를 계산하는 방법을 보여줍니다.
예: Python에서 균형 정밀도 계산
다음 코드는 예측 클래스 배열과 실제 클래스 배열을 정의한 다음 Python에서 모델의 균형 잡힌 정확도를 계산하는 방법을 보여줍니다.
import numpy as np from sklearn. metrics import balanced_accuracy_score #define array of actual classes actual = np. repeat ([1, 0], repeats=[20, 380]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375]) #calculate balanced accuracy score balanced_accuracy_score(actual, pred) 0.868421052631579
균형 정밀도는 0.8684 입니다. 이는 이전에 수동으로 계산한 값과 일치합니다.
참고 : Balanced_accuracy_score() 함수에 대한 전체 문서는 여기에서 찾을 수 있습니다.
추가 리소스
균형 잡힌 정확도 소개
Python에서 로지스틱 회귀를 수행하는 방법
Python에서 F1 점수를 계산하는 방법