Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Skor F1 Scikit-learn Menghasilkan 'UndefinedMetricWarning'?
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!