Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah `UndefinedMetricWarning` Muncul Sekali Sahaja Apabila Mengira Markah F1?

Mengapakah `UndefinedMetricWarning` Muncul Sekali Sahaja Apabila Mengira Markah F1?

Linda Hamilton
Linda Hamiltonasal
2024-11-15 19:41:02401semak imbas

Why Does `UndefinedMetricWarning` Appear Only Once When Calculating F1 Score?

UndefinedMetricWarning: F-score Undefined for Labels with No Predicted Samples

Dalam scikit-learn, metrik f1_score mengira skor F1, yang mengukur ketepatan model klasifikasi. Walau bagaimanapun, pengiraan memerlukan kehadiran sampel yang diramalkan untuk setiap label dalam pembolehubah sasaran (y_test). Jika label tertentu tiada daripada sampel yang diramalkan (y_pred), skor F1 untuk label tersebut menjadi tidak ditentukan, mengakibatkan mesej ralat:

UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.

Mengapa Ralat Berlaku Sekali sahaja

Walaupun mesej ralat mencadangkan metrik yang tidak ditentukan, ia sebenarnya amaran yang muncul sekali sahaja secara lalai. Ini kerana Python merawat amaran secara berbeza daripada ralat. Secara lalai, kebanyakan persekitaran memaparkan amaran khusus sekali sahaja, walaupun keadaan asas berterusan.

Menyelesaikan UndefinedMetricWarning

Untuk menyelesaikan amaran, adalah penting untuk memastikan bahawa semua label dalam y_test juga terdapat dalam y_pred. Ini boleh ditentukan dengan membandingkan set label:

set(y_test) - set(y_pred)

Jika keputusannya ialah set kosong, semua label telah diramalkan dan tidak akan ada markah F1 yang tidak ditentukan.

Mengelakkan Amaran Berulang

Jika penting untuk melihat amaran setiap kali ia berlaku, fungsi warnings.filterwarnings() boleh digunakan untuk mengubah suai tingkah laku pengendalian amaran:

import warnings
warnings.filterwarnings('always')

Mengabaikan Label Tanpa Sampel Diramalkan

Sebagai alternatif, label tertentu boleh dikecualikan daripada pengiraan skor F1 dengan menyatakan label bagi minat:

metrics.f1_score(y_test, y_pred, average='weighted', labels=np.unique(y_pred))

Ini memastikan bahawa label yang hilang daripada sampel yang diramalkan tidak dipertimbangkan dalam pengiraan skor, menghapuskan amaran.

Atas ialah kandungan terperinci Mengapakah `UndefinedMetricWarning` Muncul Sekali Sahaja Apabila Mengira Markah F1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn