Amaran F-Score: Metrik Tidak Ditakrifkan dan Sampel Ramalan Hilang
Dalam konteks tugas pengelasan, metrik skor F biasanya digunakan untuk menilai prestasi model. Walau bagaimanapun, apabila menghadapi ralat "UndefinedMetricWarning: F-score is ill-defined", ini menunjukkan bahawa F-score tidak boleh dikira untuk label tertentu kerana tiada sampel yang diramalkan.
Isu ini timbul apabila label hadir dalam set label sebenar (y_test) tidak muncul dalam set label yang diramalkan (y_pred). Akibatnya, pengiraan skor F untuk label sedemikian menghasilkan nilai yang tidak ditentukan. Untuk mengendalikan situasi ini, scikit-learn memberikan nilai 0.0 kepada skor F bagi label ini.
Salah satu cara untuk memerhati senario ini adalah melalui contoh. Pertimbangkan situasi di mana label '2' hadir dalam y_test tetapi tiada dalam y_pred:
>>> set(y_test) - set(y_pred) {2}
Memandangkan tiada sampel ramalan untuk label '2,' skor F untuk label ini dianggap 0.0. Memandangkan pengiraan termasuk skor 0, amaran dipaparkan oleh scikit-learn to alert about the undefined metric.
Amaran ini dinaikkan hanya pada kali pertama ia berlaku. Tingkah laku ini disebabkan oleh tetapan lalai amaran dalam Python, yang memastikan bahawa amaran khusus ditunjukkan sekali sahaja.
Untuk menyekat amaran ini, anda boleh melumpuhkannya menggunakan warnings.filterwarnings('ignore'):
import warnings warnings.filterwarnings('ignore')
Sebagai alternatif, anda boleh menentukan label minat secara eksplisit, tidak termasuk label yang tidak diramalkan sampel:
>>> metrics.f1_score(y_test, y_pred, average='weighted', labels=np.unique(y_pred)) 0.91076923076923078
Dengan menyatakan label yang sebenarnya telah diramalkan, amaran itu boleh dielakkan.
Atas ialah kandungan terperinci Mengapa F-Score Saya Melemparkan 'UndefinedMetricWarning' dalam Python dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!