如何告诉 scikit-learn 为哪个标签给出了 F-1/precision/recall 分数(在二进制分类中)?

Posted

技术标签:

【中文标题】如何告诉 scikit-learn 为哪个标签给出了 F-1/precision/recall 分数(在二进制分类中)?【英文标题】:How to tell scikit-learn for which label the F-1/precision/recall score is given (in binary classification)? 【发布时间】:2016-03-20 15:58:41 【问题描述】:

正如this article 中所解释的,无论这些计算是基于正类还是负类,计算 F-1 分数(即计算召回率和精度)都很重要。例如,如果我有一个带有 1% 的 A 类标签和 99% 的 B 类标签的倾斜数据集,并且我只是将 A 分配为正类并将所有测试项目分类为正类,那么我的 F-1 分数将非常好。如何告诉 scikit-learn 哪个类别是二进制分类中的正类别? (如果有帮助,我可以提供代码。)

【问题讨论】:

相关:***.com/questions/50933561/… 【参考方案1】:

对于二元分类,sklearn.metrics.f1_score 默认会假设 1 是正类,0 是负类。如果您使用这些约定(0 用于 B 类,1 用于 A 类),它应该会为您提供所需的行为。可以通过将 pos_label 关键字参数传递给 f1_score 函数来覆盖此行为。

见:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html

【讨论】:

也感谢您的回答。但是,因此官方文档中是否有任何参考? 阅读手册页scikit-learn.org/stable/modules/generated/…,pos_label默认为1为正类,但可以覆盖。

以上是关于如何告诉 scikit-learn 为哪个标签给出了 F-1/precision/recall 分数(在二进制分类中)?的主要内容,如果未能解决你的问题,请参考以下文章

Scikit-learn 和 Yellowbrick 给出不同的分数

如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

如何使用 scikit-learn 对文本对进行分类?

Scikit-Learn:标签不是 x 出现在所有训练示例中

scikit-learn:如何使用管道组合 LabelEncoder 和 OneHotEncoder?

scikit-learn 中聚类的混淆矩阵