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 중국어 웹사이트의 기타 관련 기사를 참조하세요!