Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah Skor F1 Scikit-learn Menghasilkan 'UndefinedMetricWarning'?

Mengapakah Skor F1 Scikit-learn Menghasilkan 'UndefinedMetricWarning'?

Linda Hamilton
Lepaskan: 2024-11-19 21:12:02
asal
566 orang telah melayarinya

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

UndefinedMetricWarning: F-Score Ralat

Apabila mengira F-skor dengan scikit-learn's metrics.f1_score, pengguna mungkin menghadapi amaran:

"UndefinedMetricWarning: F-score tidak jelas dan ditetapkan kepada 0.0 dalam label tanpa sampel yang diramalkan."

Memahami Amaran

Ini amaran timbul apabila beberapa label dalam label sebenar (y_test) tidak muncul dalam label yang diramalkan (y_pred). Dalam kes sedemikian, skor F untuk label yang tidak dijangka ini tidak boleh dikira dan diandaikan sebagai 0.0.

Contoh

Pertimbangkan contoh berikut di mana label '2' tiada dalam ramalan:

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'))
Salin selepas log masuk

Kod ini akan menghasilkan amaran.

Mengapa Hanya Kadang-kadang?

Amaran muncul hanya yang pertama masa F-skor dikira kerana kebanyakan persekitaran Python menunjukkan amaran khusus sekali sahaja. Walau bagaimanapun, tingkah laku ini boleh diubah menggunakan warnings.filterwarnings('always').

Cara Mengelakkan Amaran

Untuk mengelak daripada melihat amaran, anda boleh menetapkan sama ada warnings.filterwarnings('ignore') sebelum mengimport scikit-learn atau nyatakan label yang anda minati dengan jelas semasa mengira skor-F, seperti berikut:

# 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)
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah Skor F1 Scikit-learn Menghasilkan 'UndefinedMetricWarning'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan