2022-11-15 16:52:51

분류 모델의 성능을 평가할 때 많이 사용되는 것 중에는 F1 점수가 있습니다. 사이킷런 라이브러리로 F1 점수를 구하는 코드는 다음과 같습니다. 물론 y_test와 y_hat은 구해져있어야 합니다. 

 

from sklearn import metrics

score = metrics.f1_score(y_test, y_hat)

 

그런데 위와 같이 코드를 작성했는데, 오류가 나는 경우가 있습니다. 다음과 같이 말이죠.

 

ValueError: pos_label=1 is not a valid label.

 

 

보통 이런 에러는 클래스가 0, 1로 구성되어 있지 않을 때 발생합니다. pos_label 매개변수의 기본값으로 1이 들어가 있기 때문입니다. 만약 클래스가 0, 1이 아니라 2, 4 이렇게 구성되어 있다면, pos_label 매개변수의 값을 설정해줘야 합니다. 만약 클래스 2 예측 F1 점수를 구하고 싶다면, pos_label=2를 추가해줘야 하고, 클래스 4 예측 점수를 구하고 싶다면, pos_label=4를 추가해줘야 합니다. 

 

from sklearn import metrics

score = metrics.f1_score(y_test, y_hat, pos_label=2)

 

그러면 에러가 나지 않고 제대로 계산될 것입니다. 

 

관련 글

- [python] scikit-learn의 confusion matrix 해석하기