Scikit-Learn 中的 Micro F1 分数与类别不平衡

托比

我有一些类不平衡和一个简单的基线分类器,它将多数类分配给每个样本:

from sklearn.metrics import precision_score, recall_score, confusion_matrix

y_true = [0,0,0,1]
y_pred = [0,0,0,0]
confusion_matrix(y_true, y_pred)

这产生

[[3, 0],

[1, 0]]

这意味着 TP=3,FP=1,FN=0。

到现在为止还挺好。现在我想计算精度和召回率的微观平均值。

precision_score(y_true, y_pred, average='micro') # yields 0.75
recall_score(y_true, y_pred, average='micro') # yields 0.75

我对精度没问题,但为什么召回不是 1.0?假设 FP > 0 和 FN == 0,在这个例子中它们怎么可能相同?我知道这一定与微平均有关,但我无法理解这个。

维维克·库马尔

是的,这是因为微平均。请参阅此处文档以了解其计算方式:

请注意,如果包含所有标签,则多类设置中的“微”平均将产生与准确率相同的精度、召回率和 f 分数

正如您在上面的链接页面中看到的,精度和召回率都定义为: 在此处输入图片说明

其中 R(y, y-hat) 是:

在此处输入图片说明

所以在你的情况下,召回微将计算为

R = number of correct predictions / total predictions = 3/4 = 0.75

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何处理 Scikit.learn 管道中不平衡的 xgboost 多类分类?

来自分类Dev

使用scikit Learn产生奇怪的F1分数结果

来自分类Dev

使用scikit Learn产生奇怪的F1分数结果

来自分类Dev

从精度,召回率,F1分数计算准确性-scikit-learn

来自分类Dev

scikit-learn计算多标签分类中的F1

来自分类Dev

scikit-learn中多类分类器的平均值=“ micro”的精确召回曲线

来自分类Dev

具有许多类别的不平衡数据集,一个热编码问题,F1得分高,但验证集准确性非常低

来自分类Dev

在scikit-learn中对LogisticRegressionCV()使用l1惩罚

来自分类Dev

Scikit Learn中的交叉验证

来自分类Dev

Scikit Learn中的距离指标

来自分类Dev

scikit加权F1分数的计算和使用

来自分类Dev

正确计算Sklearn中的F1分数

来自分类Dev

iOS 8中的通话不平衡

来自分类Dev

Chrome中不平衡的CSS列

来自分类Dev

Matlab中不平衡的Anova

来自分类Dev

DEoptim中的堆栈不平衡

来自分类Dev

了解Scikit Learn中的Birch集群设置

来自分类Dev

scikit-learn中的成本敏感分析

来自分类Dev

在Scikit Learn中控制Logistic回归的阈值

来自分类Dev

scikit-learn中的“ verbose”参数

来自分类Dev

scikit-learn中LogisticRegression的GridSearchCV

来自分类Dev

删除scikit Learn中的特定功能

来自分类Dev

在scikit-learn中运行Randomforest的MemoryError

来自分类Dev

Scikit-Learn KDE中的PDF估计

来自分类Dev

Scikit-Learn中的分类数据转换

来自分类Dev

scikit-learn中的StratifiedKFold vs KFold

来自分类Dev

在scikit-learn中运行Randomforest的MemoryError

来自分类Dev

了解Scikit Learn中的Birch集群设置

来自分类Dev

scikit-learn中的叶排序