首页 > 解决方案 > 在 F1 宏分数计算期间忽略折叠

问题描述

我最近一直在研究多类分类。我使用的指标是 micro F1,称为:

f1_score(predictions,real_labels,average="micro")

对于某些折叠(我正在做 10f 分层交叉验证),我得到:

/home/user/.local/lib/python3.6/site- 
packages/sklearn/metrics/classification.py:1145: 
UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.

错误。我想知道我怎么能忽略这样的褶皱?

谢谢!

标签: pythonmachine-learningscikit-learn

解决方案


正如您所提到的,您有 7 个类的 133 个实例,并且您正在进行 10 个分层折叠,因此对于每个折叠,您将有大约 13 个实例,如果您的一个类代表不到 7.5% 的数据,您可能有一个包含该类的 0 个实例的折叠,因此错误。

检查您的班级比例并增加训练数据或降低折叠数以避免此警告。

分层折叠确保每个折叠中的类分布与全集中的类分布相似,因此如果你有一个只代表 7% 实例的类,而每个折叠只有 13 个实例,那么 13*7/ 100 < 1,这意味着在 10 个分层折叠的每个折叠中都没有足够的此类数据来表示。


推荐阅读