> 백엔드 개발 > 파이썬 튜토리얼 > Scikit-learn의 F1-Score가 'UndefineMetricWarning'을 생성하는 이유는 무엇입니까?

Scikit-learn의 F1-Score가 'UndefineMetricWarning'을 생성하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-19 21:12:02
원래의
575명이 탐색했습니다.

Why Does Scikit-learn's F1-Score Produce an

UndefineMetricWarning: F-Score Error

scikit-learn의metrics.f1_score로 F-점수를 계산할 때 사용자에게 경고가 나타날 수 있습니다.

"정의되지 않은MetricWarning: F-점수가 잘못 정의되었으며 예측 샘플이 없는 레이블에서 0.0으로 설정되었습니다."

경고 이해

이것은 실제 레이블(y_test)의 일부 레이블이 예측 레이블(y_pred)에 나타나지 않으면 경고가 발생합니다. 이러한 경우 예측되지 않은 라벨에 대한 F-점수는 계산할 수 없으며 0.0으로 가정됩니다.

레이블 '2'가 있는 다음 예를 고려하세요. 예측에는 없습니다:

y_test = [1, 10, 35, 9, 7, 29, 26, 3, 8, 23, 39, 11, 20, 2, 5, 23, 28,
       30, 32, 18, 5, 34, 4, 25, 12, 24, 13, 21, 38, 19, 33, 33, 16, 20,
       18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22,
       11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 12, 36,
       25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 34, 25, 26, 29, 14, 37, 23,
       12, 19, 19, 3, 2, 31, 30, 11, 2, 24, 19, 27, 22, 13, 6, 18, 20,
        6, 34, 33, 2, 37, 17, 30, 24, 2, 36, 9, 36, 19, 33, 35, 0, 4,
        1]

y_pred = [1, 10, 35, 7, 7, 29, 26, 3, 8, 23, 39, 11, 20, 4, 5, 23, 28,
       30, 32, 18, 5, 39, 4, 25, 0, 24, 13, 21, 38, 19, 33, 33, 16, 20,
       18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22,
       11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 30, 36,
       25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 4, 22, 26, 29, 14, 37, 23,
       12, 19, 19, 3, 25, 31, 30, 11, 25, 24, 19, 27, 22, 13, 6, 18, 20,
        6, 39, 33, 9, 37, 17, 30, 24, 9, 36, 39, 36, 19, 33, 35, 0, 4,
        1]

print(metrics.f1_score(y_test, y_pred, average='weighted'))
로그인 후 복사

이 코드는 경고를 생성합니다.

왜 가끔씩만 발생합니까?

경고는 첫 번째에만 나타납니다. 대부분의 Python 환경은 특정 경고를 한 번만 표시하기 때문에 시간 F-점수가 계산됩니다. 그러나 이 동작은 warnings.filterwarnings('always')를 사용하여 변경할 수 있습니다.

경고를 피하는 방법

경고가 표시되지 않도록 하려면 다음 중 하나를 설정하세요. scikit-learn을 가져오기 전에 warnings.filterwarnings('ignore')를 수행하거나 다음과 같이 F-점수 계산 시 관심 있는 레이블을 명시적으로 지정하십시오.

# Ignore warnings
warnings.filterwarnings('ignore')
metrics.f1_score(y_test, y_pred, average='weighted')

# Explicitly specify labels
unique_labels = np.unique(y_pred)
metrics.f1_score(y_test, y_pred, average='weighted', labels=unique_labels)
로그인 후 복사

위 내용은 Scikit-learn의 F1-Score가 'UndefineMetricWarning'을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿