python - 在 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.
错误。我想知道我怎么能忽略这样的褶皱?
谢谢!
解决方案
正如您所提到的,您有 7 个类的 133 个实例,并且您正在进行 10 个分层折叠,因此对于每个折叠,您将有大约 13 个实例,如果您的一个类代表不到 7.5% 的数据,您可能有一个包含该类的 0 个实例的折叠,因此错误。
检查您的班级比例并增加训练数据或降低折叠数以避免此警告。
分层折叠确保每个折叠中的类分布与全集中的类分布相似,因此如果你有一个只代表 7% 实例的类,而每个折叠只有 13 个实例,那么 13*7/ 100 < 1,这意味着在 10 个分层折叠的每个折叠中都没有足够的此类数据来表示。
推荐阅读
- shell - 有没有在我的 WLS Ubuntu 18.04 上安装 DRAKE 的解决方案
- php - How To Make this table
- android - 按钮不会移动到 EditText 旁边
- java - 界面中的 JPA Hibernate 更新查询
- css - Oracle APEX 主题 CSS 左上角汉堡
- c++ - 从派生类访问基类中的类型别名
- python - 如何执行这个嵌套的 while true 循环?
- python - 如何有效地找到最近的二维点/点
- c++ - C++ 从原始 img 读取 16 位二进制数据并将它们存储在向量中
- c++ - 为什么 const 变量在 C++ 中是左值?