F-Score 警告:未定义的指标和缺失预测样本
在分类任务中,通常使用 F-score 指标评估模型性能。然而,当遇到“UndefinedMetricWarning: F-score is ill-define”错误时,表示由于没有预测样本,无法计算某些标签的 F-score。
当标签出现时,就会出现此问题真实标签集(y_test)中存在的内容不会出现在预测标签集(y_pred)中。因此,计算此类标签的 F 分数会导致未定义的值。为了处理这种情况,scikit-learn 为这些标签的 F 分数分配了 0.0 值。
观察这种情况的一种方法是通过示例。考虑标签“2”出现在 y_test 中但在 y_pred 中不存在的情况:
>>> set(y_test) - set(y_pred) {2}
由于标签“2”没有预测样本,因此该标签的 F 分数被视为 0.0。由于计算中包含 0 分,因此 scikit-learn 会显示一条警告,以提醒未定义的指标。
此警告仅在第一次发生时才会引发。此行为是由于 Python 中警告的默认设置造成的,该设置确保特定警告仅显示一次。
要抑制此警告,可以使用 warnings.filterwarnings('ignore') 禁用它:
import warnings warnings.filterwarnings('ignore')
或者,您可以显式指定感兴趣的标签,排除那些没有预测的标签样本:
>>> metrics.f1_score(y_test, y_pred, average='weighted', labels=np.unique(y_pred)) 0.91076923076923078
通过指定实际预测的标签,可以避免警告。
以上是为什么我的 F-Score 在 Python 中抛出“UndefinedMetricWarning”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!