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

Mengapakah Skor F1 Scikit-learn Menghasilkan 'UndefinedMetricWarning'?

Linda Hamilton
Linda Hamiltonasal
2024-11-19 21:12:02579semak imbas

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'))

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)

Atas ialah kandungan terperinci Mengapakah Skor F1 Scikit-learn Menghasilkan 'UndefinedMetricWarning'?. 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